reader.onload 关闭未触发

pat*_*g94 1 javascript file filereader

我正在使用 FileReader 进行简单的文件文本上传。

var filesInput = document.getElementById("txtImport");

for (var i = 0; i < filesInput.files.length; i++) {
    current = filesInput.files[i];

    var reader = new FileReader();
    reader.onload = function(file) {
        return function(e) {
            console.log('e', e) // not logging
        }
    }(current)
}
Run Code Online (Sandbox Code Playgroud)

在使用结果和参数读取 FileReader onload时,我需要使用闭包以免丢失循环内的范围。当我点击按钮触发上传时,为什么没有出现日志?为什么该函数没有触发?

Mát*_*nka 5

您需要调用以下readAs___方法之一FileReader

https://developer.mozilla.org/en-US/docs/Web/API/FileReader

如果您并行读取多个文件,则每个文件都需要一个单独的读取器。

此外,事件处理程序接收的参数是事件对象,而不是文件的内容。那些将在reader.result.

for (var i = 0; i < filesInput.files.length; i++) {
    let reader = new FileReader();
    reader.onload = function(event) {
        console.log(reader.result);
    }
    reader.readAsText(filesInput.files[i]);
}
Run Code Online (Sandbox Code Playgroud)