javascript - 通过 FileAPI 上传文件

标签 javascript html filereader fileapi

我需要将多个文件读取到一个函数 A 中。我需要为此使用 FileAPI。 但是 FileReader 执行异步下载。 是否可以在不退出的情况下获取函数A末尾所有文件的内容?

最佳答案

完全清楚,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

关于javascript - 通过 FileAPI 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8634452/

相关文章:

javascript - React TinyMCE - 设置初始值

javascript - 我可以使用 insertAdjacentHTML 添加一长串 html 标签和文本吗?

javascript - 选择 React 或 Angular 等前端技术来实现具有 1000 多种不同表单/ View 的 Silverlight 应用程序的现代化

javascript - 如何为某些元素禁用 e.preventDefault

java - 从包中读取文件

Javascript - 从 FileReader 异步 onload 方法获取值

javascript - 如何在每次循环迭代中更新DOM?

html - 如何解析具有嵌套结构的html文件?

html - CSS:垂直和水平对齐列表元素

java - FileReader 是否接受 Eclipse 插件项目中的相对路径?