javascript - 如何将 FileReader base64 分配给变量?
问题描述
我试图打印 base46 数据,它来自:
var fileData;
var files = document.getElementById('pickUpFileAttachment').files;
if (files.length > 0) {
var promise = getBase64(files[0]);
promise.then(function (result) {
fileData = result;
console.log(result);
});
}
function getBase64(file, onLoadCallback) {
return new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.onload = function () {
resolve(reader.result);
};
reader.onerror = reject;
reader.readAsDataURL(file);
});
}
数据中console.log(result)
存在,但是当我将其分配给fileData
并尝试在getBase64()
函数结束后对其进行控制台时,我得到了undefined
。如何将 base64 数据分配给变量?
console.log("displaying the 64base data");
console.log(fileData);
解决方案
在getBase64()
函数的末尾fileData
还没有分配,因为那时.then
还没有调用 promise 的回调。
唯一设置和定义它的地方是在 promise 的回调中.then
。正如您所说,您确实在console.log(result)
.
你应该熟悉异步 JS,这里有一些文章:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
推荐阅读
- php - 通过表单 php 邮件发送图像
- python - Python 字符串迭代:如何先打印任何非元音字符,然后打印元音(通过 For 循环)
- python - Python BeautifulSoup - 获取数据标签
- javascript - React useEffect清理功能多次运行?
- python - 如何使用 virtualenv 在 VS Code 中调试 python?再次
- rust - 如何使用 Rust 与 Actix Web 和 WebSockets 发送服务器事件?
- android - 如何在android中以编程方式关闭Android手机
- python-3.x - Python-通过分隔符将一列中的字符串拆分为多列
- javascript - 为什么过渡不适用于第一次点击事件?
- angular - Angular 表单验证失败,导致一些问题?