Конденсатор записывает файлы в папку загрузки - PullRequest
1 голос
/ 18 июня 2020

Я использую конденсатор ioni c для преобразования веб-приложения в приложение android. В моем приложении есть функция загрузки csv, которая использовала этот код для загрузки файла csv

   const blob = new Blob([response.data], { type: "text/csv" });
   const url = window.URL.createObjectURL(blob);
   const link = document.createElement("a");
   link.href = url;
   const fileName = this.fileName + "_" + date + ".csv";
   link.setAttribute("download", fileName);
   document.body.appendChild(link);
   link.click();

Это не работает с конденсатором, поэтому я использовал их плагин Filesystem для записи файла в хранилище. Проблема в том, что с помощью FilesystemDirectory я могу сохранять файлы в Cache, Data, Documents, External и ExternalStorage. Работает, но неудобно. Как переместить файл в папку Downloads?

Вот мой полный код

 async fetchCsvFromApi(payloadData) {
      const info = await Device.getInfo();
      return await this.$store
        .dispatch("exportCsv/fetchCsv", payloadData)
        .then(response => {
          var today = new Date();
          var date =
            today.getFullYear() +
            "-" +
            (today.getMonth() + 1) +
            "-" +
            today.getDate();
          const blob = new Blob([response.data], { type: "text/csv" });
          const url = window.URL.createObjectURL(blob);
          const link = document.createElement("a");
          link.href = url;
          const fileName = this.fileName + "_" + date + ".csv";
          link.setAttribute("download", fileName);
          if(info && ['android', 'ios'].includes(info.platform)){ 
            this.fileWrite(response.data, fileName)
          }else{
            document.body.appendChild(link);
            link.click();
          }
        })
        .catch(error => {
          console.error(error)
          this.$toast.error(error.response.data.message);
        });
    },
    async fileWrite(data, fileName) {
      try {
        const result = await Filesystem.writeFile({
          path: fileName,
          data: data,
          directory: FilesystemDirectory.External,
          encoding: FilesystemEncoding.UTF8
        })
        console.log('Wrote file', result);
      } catch(e) {
        console.error('Unable to write file', e);
      }
    },

Я использую его в проекте Vue. js.

...