首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将参数传递给FileReader onload事件

将参数传递给FileReader onload事件
EN

Stack Overflow用户
提问于 2013-06-05 18:13:03
回答 1查看 36.5K关注 0票数 24

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

代码语言:javascript
复制
function handleFileDrop(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    var files = evt.dataTransfer.files; // FileList object.
    ...
}

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

代码语言:javascript
复制
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事件,例如:

代码语言:javascript
复制
reader.onload = (function(theFile){
    return function(e){

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

    };
})(currFile); 

是可能的吗?我该怎么做呢?提前感谢您的帮助,致以最良好的敬意

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-05 18:23:55

尝试以下操作:

代码语言:javascript
复制
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变量。然后创建一个可以访问该变量的函数(由于闭包)并返回它。

票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16937223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档