javascript - 带有结果和参数的 FileReader 加载

标签 javascript filereader

我无法同时获取文件读取器的结果和 onload 函数中的一些参数。这是我的代码:

控件的 HTML:

<input type="file" id="files_input" multiple/>

Javascript函数:

function openFiles(evt){
    var files = evt.target.files;
    for (var i = 0; i < files.length; i++) {
      var file=files[i];
      reader = new FileReader();
      reader.onload = function(){
          var data = $.csv.toArrays(this.result,{separator:'\t'});
      };
      reader.readAsText(file);
    }
  }

添加事件:

 files_input.addEventListener("change", openFiles, false);

我在onload 函数中使用filereader.result。如果我为此函数使用参数(例如文件),我将无法再访问结果。例如,我想在 onload 函数中使用 file.name 。如何解决这个问题?

最佳答案

尝试将 onload 函数包装在另一个函数中。在这里,闭包让您可以通过变量 f 依次访问正在处理的每个文件:

function openFiles(evt){
    var files = evt.target.files;

    for (var i = 0, len = files.length; i < len; i++) {
        var file = files[i];

        var reader = new FileReader();

        reader.onload = (function(f) {
            return function(e) {
                // Here you can use `e.target.result` or `this.result`
                // and `f.name`.
            };
        })(file);

        reader.readAsText(file);
    }
}

有关为何需要此处关闭的讨论,请参阅以下相关问题:

关于javascript - 带有结果和参数的 FileReader 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27254735/

相关文章:

javascript - 如何在 ng-repeat 中切换特定的 div 元素?

javascript - Python Bokeh CustomJS RadioGroup

javascript - 当我尝试打印到文本区域字段时,数据被 [object NodeList] 替换

java - 如何获取从日期到日期的tomcat日志文件数据并将其作为文件显示在jsp中(JAVA)

java - 无法使用 FileReader 和 BufferedReader 在 Java 中读取文本文件

ruby - 从 Ruby 中的文件中读取每 8 个字节

javascript - CreateJS 和 Flash Pro

javascript - 将逗号分隔值传递给 ASP.NET MVC 操作方法

java - 如何从java中的文本文件/文件夹中获取字数(不更改文件夹的读取顺序)

javascript - 上传 Node FS 后文件损坏