Я использую конденсатор 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.