所以我当前正在使用以下代码将文件读取为base64:
function getBase64(file) {
return new Promise(function(resolve, reject) {
var fr = new FileReader();
fr.readAsDataURL(file);
fr.onload = resolve(fr);
});
}
现在,每当我加载超过一定大小的文件(不确定文件大小)时,它会为fr.result
返回null。
但这似乎不是Google Chrome浏览器的问题。对于任何文件大小,它将返回base64。我目前正在使用Microsoft Edge进行测试。
答案 0 :(得分:1)
resolve(fr)
正在同步求值,应该包装在一个函数中。您仍然会看到一些数据,因为readAsDataURL
正在异步运行,并且在调用resolve(fr)
之前已经设法读取了一些数据。
您可能还应该在开始读取文件之前注册处理程序。
function getBase64(file) {
return new Promise(function(resolve, reject) {
var fr = new FileReader();
fr.onload = function() { resolve(fr); };
fr.readAsDataURL(file);
});
}