通过FileAPI上传文件

时间:2011-12-26 09:28:57

标签: javascript html5 filereader fileapi

我需要将多个文件读入单个函数A.我需要使用FileAPI。 但FileReader执行异步下载。 我可以在不退出的情况下获取函数A末尾的所有文件的内容吗?

1 个答案:

答案 0 :(得分:1)

为了清楚起见,FileReader没有下载任何内容。它异步读取文件内容(因为它显示在磁盘上)到内存中。

要做你想做的事,只需跟踪读取的文件,并在完成后调用回调:

document.querySelector('[type="file"]').change = function(e) {
  handleFiles(toArray(e.target.files), function(results) {
    // results is an Array containing the FileReader results.
    alert('Done!');
  });

function toArray(list) {
  return Array.prototype.slice.call(list || [], 0);
}

function handleFiles(files, callback) {
  var results = [];

  files.forEach(function(file, i) {
    var reader = new FileReader();

    // Closure to capture the file information.
    reader.onload = function(e) {
      results.push(e.target.result);
      if (results.length == files.length) {
        callback(results);
      }
    };
    reader.readAsDataURL(file);
  });
}

试一试:http://jsbin.com/epatel/3/edit#html,live