【发布时间】:2018-06-26 15:22:48
【问题描述】:
用例:删除多个文件时,我需要获取它们的 base64 值。
我希望我可以说下面的代码有效,但它没有。不是当你有多个文件时。我确定是时间问题?一些文件得到他们的base64,但有些没有?
帮助?我正在使用 Angular 5。同样,这是在拖放事件中。
dropHandler(e) {
e.stopPropagation();
e.preventDefault();
this.uploading = true;
this.message = "uploading...";
//console.log(this._router.url);
//Retrieve all the files from the FileList object
var files = e.target.files || e.dataTransfer.files;
if (files.length > 0) {
//addFiles gives us the base64 value
var promise = this.addFiles(files);
//
promise.then(
res => {
console.log(res);
}
);
}
}
//Add files and get base64 from FileReader
addFiles(files) {
return new Promise(function (resolve, reject) {
var response = [];
if (files) {
for (var i = 0; i < files.length; i++) {
var f = files[i];
let file = {
FileName: f.name,
FileType: f.type,
FileValue: null,
IsActive: true
};
var reader = new FileReader();
reader.onload = function (e) { // Possible clean-up?
file.FileValue = btoa(reader.result);
response.push(file);
//
if (response.length == files.length) {
// Everything is done. Resolve the promise.
resolve(response);
}
};
//
reader.readAsDataURL(f);
}
}
});
}
【问题讨论】:
标签: angular base64 filereader