javascript - 选择输入类型为:file (pdf) 的本地文件并将其转换为 base64 字符串
问题描述
如何从具有输入类型的选定文件中获取base64字符串:javascript中的文件(多个.pdf)。我需要一个变量中的base64字符串。
function handleFileSelect(e) {
console.dir(e);
if (!e.target.files) return;
selDiv.innerHTML = "";
var files = e.target.files;
for (var i = 0; i < files.length; i++) {
var base64;
var fileToLoad = document.getElementById("files").files[i]
var fileReader = new FileReader();
fileReader.onload = function (fileLoadedEvent) {
base64 = fileLoadedEvent.target.result;
console.log(base64);
};
fileReader.readAsDataURL(fileToLoad);
var f = files[i];
var TmpPath = URL.createObjectURL(e.target.files[i]);
var name = f.name;
var extencion = f.name.split('.')[1];
selDiv.innerHTML += f.name + " <a href='#' onclick=verdetalle(" + i + ",'" + extencion + "','" + name + "','" + base64 + "','" + TmpPath + "')>Ver Detalle</a>" + "<br/>";
}
}
但我不尊重我的 base64 变量的值,只有当我从浏览器调试它时。
在这行代码中,我为每个选定的文件创建一个链接,在其中分配一个 onchange 并传递变量 i、扩展名、名称、base64、TmpPath,但我缺少 base64 变量
selDiv.innerHTML += f.name + " <a href='#' onclick=verdetalle(" + i + ",'" + extencion + "','" + name + "','" + base64 + "','" + TmpPath + "')>Ver Detalle</a>" + "<br/>";
解决方案
试试下面的代码片段,
var base64String;
function handleFileSelect(callback) {
var file = document.getElementById('filePicker').files[0];
var reader = new FileReader();
reader.onload = function(readerEvt) {
var binaryString = readerEvt.target.result;
base64String = btoa(binaryString);
// alert(base64String);
// Do additional stuff
callback(base64String);
};
reader.readAsBinaryString(file);
};
<div>
<div>
<label for="filePicker">Choose file:</label><br>
<input type="file" id="filePicker" onchange="handleFileSelect(function(base64String){alert(base64String)})">
</div>
<br>
</div>
推荐阅读
- elasticsearch - 过滤器不适用于加权搜索
- php - 如何在亚马逊 AMI 实例上编辑 php.ini(php 版本 7.1)文件
- apache - 有没有办法创建一个可以重新启动 Apache httpd 服务器的自定义任务?
- django - Django Model-有没有办法在 wagtail 面板中选择多个页面,如 checbox?
- python - Python:创建一个接受表达式并将表达式打印为字符串及其结果的函数
- javascript - 第二次单击时按钮被禁用
- javascript - 如何在 reactjs 中以编程方式触发 onsubmit 事件?
- android - 无法从 Firebase 数据库中获取数据 - 它返回一个空值
- laravel - 如何获取总和ID较少的数据
- python-3.x - 在 Python 3 中安装 Shapely