我已经实现了使用promise从文件中获取base64的方法。在边缘,镀铬和Firefox上运行良好。
问题是我还必须使其在Internet Explorer 11中工作。这不喜欢我发现的承诺。问题是IE11正在使用ES5,而Promises则出现在ES6中。 (如果我错了,请纠正我)
所以我有3种选择。
哪个对我来说是最好的选择?
这是我需要更改的代码:
$('#fileselected').change(function (e) {
var fileList = document.getElementById('fileselected').files;
var file = fileList[0]; // User can only choose one file at a time
getBase64(file).then(
data => {
var fileObj = { name: file.name, base64: data };
postFilesToUpload.push(fileObj); // Collecting the files, if user wants to add multiple
}
);
$("#postfilesadded").append("<li><h5>" + file.name + "</h5></li>"); // Show the user which files he have selected to upload
});
此方法使用的是我需要更改的另一种方法:
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}