代码之家  ›  专栏  ›  技术社区  ›  ThePerplexedOne

FileReader只读取小文件,否则返回null

  •  0
  • ThePerplexedOne  · 技术社区  · 6 年前

    因此,我当前使用以下代码将文件读取为base64:

    function getBase64(file) {
        return new Promise(function(resolve, reject) {
            var fr = new FileReader();
            fr.readAsDataURL(file);
            fr.onload = resolve(fr);
      });
    }
    

    现在,每当我加载一个超过一定大小的文件时(不确定它是什么),它都会返回null fr.result .

    1 回复  |  直到 6 年前
        1
  •  1
  •   phuzi Frank Heikens    6 年前

    resolve(fr) 正在同步求值,应包装在函数中。你仍然看到一些数据,因为 readAsDataURL 正在异步运行,并且之前已成功读取一些数据 解析(fr) 被称为。

    function getBase64(file) {
        return new Promise(function(resolve, reject) {
            var fr = new FileReader();
            fr.onload = function() { resolve(fr); };
            fr.readAsDataURL(file);
      });
    }