太长,读不下去了想做一个文本编辑器,做了,现在我正在尝试一个上传功能。
我想把每个文件都读成文本,但我不确定我做得是否正确。
这是我的剧本:
function main() {
$('#imported-files').on('change', function() {
var files = this.files,
reader = new FileReader();
console.log(typeof(files))
reader.onload = function(e) {
console.log(e.target.result);
}
for (let i = 0, numFiles = files.length; i < numFiles; i++) {
const file = files[i];
reader.readAsText(file)
}
})
}
$(document).ready(main);
是,输入标记为多个,并接受所有文件类型。我得到更改事件,得到文件和一个新的filereader obj。加载后,它将读取文件结果。
这适用于单个上载的文件
但是当for循环中有多个文件时 files
列表中,它抛出一个错误,因为它已在读取文件。
可能的解决方案,我无法证明这样做的合理性:
在每个循环中创建一个新的filereader,对于小文件列表来说似乎是可靠的,但不是最佳实践
为读者写一个承诺,使之成为一个同步动作,然后在循环中继续
我也不太了解FileReaderAPI,但是通过mozilla站点阅读,我发现它有不同的功能来检查文件读取器的状态。如果有人能透露一些信息那就太棒了。
暂无答案!
目前还没有任何答案,快来回答吧!