Cordova-плагин-пользовательский интерфейс заморозить файл, когда fileWriter.write - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть <input type='file'> в моей форме. Теперь я хочу сохранить выбранный файл в LocalFileSystem.PERSISTENT.

Мой код для этого:

self.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
  fs.root.getFile(file_name, { create: true, exclusive: false }, function (fileEntry) {
    var reader = new FileReader();
    reader.onloadend = function () {
      fileEntry.createWriter(function (fileWriter) {
        fileWriter.onwriteend = function () {};
        fileWriter.onerror = function (e) {};
        dataObj = new Blob([reader.result], { type: 'text/plain' });
        // freeze here
        fileWriter.write(dataObj);
        postMessage('ok');
      });
    };
    reader.readAsDataURL($(file_id)[0].files[0]);
  }, onErrorCreateFile);
}, onErrorLoadFs);

Но этот код останавливает мой пользовательский интерфейс на устройстве (ios, android) вверх до 10 секунд, когда файл 30 МБ. Я открыл для себя мир Web Workers , но нет доступа к LocalFileSystem.

Как сохранить выбранный файл (<input type='file'>) в моем LocalFileSystem без зависаний интерфейса?

...