Загрузить файлы в Cordova - PullRequest
       4

Загрузить файлы в Cordova

0 голосов
/ 26 февраля 2020

Мне нужно загрузить файлы zip и xlsx с устройства на сервер. Так что я погуглил и нашел https://www.tutorialspoint.com/cordova/cordova_file_system.htm. Но это не работает. Он всегда выбрасывает window.requestFileSystem не является функцией. Так есть ли плагины для чтения файловой системы устройства в кордове. Спасибо.

1 Ответ

2 голосов
/ 26 февраля 2020

Вот некоторые рекомендации для вас, я использовал эти плагины раньше:

Чтобы открыть средство выбора файлов в телефоне, чтобы пользователь мог просмотреть и выбрать файл: cordova-plugin-filechooser: https://www.npmjs.com/package/cordova-plugin-filechooser

Чтобы получить путь к файлу после того, как пользователь выбрал файл: cordova-plugin-filepath: https://www.npmjs.com/package/cordova-plugin-filepath

Чтобы прочитать файл и преобразовать его в Blob, чтобы можно было загрузить в сервер: cordova-plugin-file https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/

Вот пример того, как интегрировать 3 библиотеки в JS, чтобы пользователь мог выбрать файл PDF в своем телефоне и загрузить на сервер. на его основе конвертировать в angular

uploadFile() {
  let vm = this;
  let filter = { "mime": "application/pdf" };
  // open file chooser
  fileChooser.open(filter, function(uri) {
    // change content:// to path:///
    window.FilePath.resolveNativePath(uri, function(fs) {
      vm.successCallback(fs)
    }, vm.onError());
  });
},


  successCallback(localFileUri) {
      let vm = this;
      // open file using path
      let fileFormat = localFileUri.substr(localFileUri.length - 4);
      // manually rejected if not pdf, because mime filter is not working on some phone
      if (fileFormat !== ".pdf") {

        return false;
      }
      window.resolveLocalFileSystemURL(localFileUri, function(fs) {
        console.log(fs);
        fs.file(function(res) {
          var reader = new FileReader();
          reader.onloadend = (evt) => {
            var fileBlob = new Blob([evt.target.result], { type: "application/pdf" });
            vm.sendToServer({ file: fileBlob, name: fs.name });
          };
          reader.readAsArrayBuffer(res);
        })
      }, vm.onError());
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...