出现错误时,IE Edge不会调用FileReader.onerror方法

时间:2018-12-05 08:48:29

标签: javascript internet-explorer filereader

我正在使用FileReader使用'readAsText'方法检测给定的blob是文件还是文件夹。我有以下代码:

  testFileOrFolder(file) {
    return new Promise((resolve, reject) => {
      const fileReader = new FileReader();

      fileReader.onload = (ev) => {
        resolve({isFile: true}); 
      };
      fileReader.onerror = (error) => {
        resolve({isFile: false}); 
      };

      fileReader.readAsText(file);
    });
  }

当有文件IE边缘命中'onload'方法,一切正常。

在其他情况下,当存在文件夹时,不会触发'onerror'方法。 这仅在IE Edge中发生。

控制台中有错误,但即使使用try / catch也无法处理。

1 个答案:

答案 0 :(得分:0)

我添加了try / catch语句,它起作用了。工作代码为:

  testFileOrFolder(file) {
    return new Promise((resolve, reject) => {
      const fileReader = new FileReader();

      fileReader.onload = (ev) => {
        resolve({isFile: true}); 
      };
      fileReader.onerror = (error) => {
        resolve({isFile: false}); 
      };

      // Catch fileReader Error for IE Edge
      try {
        fileReader.readAsText(file);
      }
      catch (err) {
        resolve({isFile: false}); 
      };
    });
  }

Microsoft文档说支持'onerror'的事件,但这可能取决于浏览器版本