此函数读取从输入字段获取的文件并返回其 dataUrls:
readAsDataURL (target) {
// target => <input type="file" id="file">
var reader = new FileReader()
return new Promise(function (resolve, reject) {
reader.onload = function (event) {
resolve(event.target.result)
}
reader.readAsDataURL(target.files[0])
})
},
如您所见,该函数仅处理单个文件。我想返回多个文件。我尝试做reader.readAsDataURL(target.files)
但得到这个错误:'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.
如何让函数返回多个dataUrl?
你有没有尝试过使用Promise.all https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all?您也许可以执行以下操作:
fileToDataURL(file) {
var reader = new FileReader()
return new Promise(function (resolve, reject) {
reader.onload = function (event) {
resolve(event.target.result)
}
reader.readAsDataURL(file)
})
}
readAsDataURL (target) {
// target => <input type="file" id="file">
var filesArray = Array.prototype.slice.call(target.files)
return Promise.all(filesArray.map(fileToDataURL))
}
这本质上与您设置的操作相同,但为每个操作创建一个承诺,仅在所有操作完成后才以数组形式返回结果。
我忘了你不能治疗target.files
直接作为数组,所以需要先转换。为此,您可以使用:Array.prototype.slice.call(target.files)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)