javascript - 将参数传递给 FileReader onload 事件

标签 javascript html filereader

我需要读取用户提供的一些 csv 文件。使用拖放 div 将文件传递到页面/脚本,该 div 按如下方式处理文件放置:

function handleFileDrop(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    var files = evt.dataTransfer.files; // FileList object.
    ...
}

我需要使用将文件转换为数组的 csv 库来解析每个文件,但我还需要跟踪我当前正在解析的文件名。这是我用来解析每个文件的代码:

for(var x = 0; x < files.length; x++){
    var currFile = files[x];
    var fileName = currFile.name;
    var reader = new FileReader();
    reader.onload = (function(theFile){
        return function(e){
            var csvArr = CSV.csvToArray( e.target.result, ";", true );
            console.log(csvArr); 
        };
    })(currFile);   
    reader.readAsText(currFile);
}

在此之前,一切正常。我还需要将文件名传递给 reader.onload 事件,例如:

reader.onload = (function(theFile){
    return function(e){

       ***** I need to have fileName value HERE *****

    };
})(currFile); 

可能吗?我怎样才能做到这一点?在此先感谢您的帮助,最好的问候

最佳答案

尝试以下操作:

var reader = new FileReader();
reader.onload = (function(theFile){
    var fileName = theFile.name;
    return function(e){
        console.log(fileName);
        console.log(e.target.result);
    };
})(currFile);   
reader.readAsText(currFile);

在这里,每次将文件传递给外部方法时,您都会创建一个新的 fileName 变量。然后,您将创建一个可以访问该变量(由于闭包)并返回它的函数。

关于javascript - 将参数传递给 FileReader onload 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16937223/

相关文章:

javascript - 组合 div 和 span 标签样式失败

html - 在 twitter bootstrap 导航栏中居中图像

javascript - 仅包含特定数字的 HTML 输入框

javascript - 如何从Django浏览本地文件并存储文件信息

javascript - Qtranslate 每种语言的自定义字体问题

javascript - 动态设置 Javascript 函数

javascript - 尝试在 jQuery 脚本中使用不同的数组数据结构

html - Spans 和 div 元素不会居中,并且 margin-top/bottom 不起作用

javascript - 在 Firefox 中,onload 未使用 createObjectURL img.src 触发

javascript - 数据 URI 在 CSS 中不起作用