IE Edge не вызывает метод FileReader.onerror при возникновении ошибки - PullRequest
0 голосов
/ 05 декабря 2018

Я использую FileReader, чтобы определить, является ли данный большой двоичный файл файлом или папкой, используя метод readAsText.У меня есть следующий код:

  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 голосов
/ 06 декабря 2018

Я добавляю оператор 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' поддерживается, но это может зависеть от версии браузера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...