【发布时间】:2016-10-10 09:37:08
【问题描述】:
我正在尝试使用 FileReader 上传一组文件,这些文件经过 base64 编码并存储在数组中以供进一步处理。我很难理解我需要创建的模式以确保所有文件都已上传,因为我必须等待 onload 事件处理程序触发。例如;
如果我将一组文件传递给以下函数,它将在文件实际上传之前解决承诺。
localUploads( event ) : any {
var response = [];
return new Promise( function(resolve, reject) {
//Retrieve all the files from the FileList object
var files = event.target.files;
var response = [];
if (files) {
for (var i=0, f; f=files[i]; i++) {
var r = new FileReader();
r.onload = (function(f) {
return function(e) {
let contents = e.target['result'];
let file = {
name: f.name,
asset: contents,
private: false
};
console.log('we are pushing into the array');
response.push( file );
};
})(f);
}
resolve( response );
}
r.readAsText(f);
});
}
有人可以请教一个新手吗?
非常感谢。
【问题讨论】:
标签: javascript angular filereader