#angular #ionic-framework
Вопрос:
Я просто проверяю загрузку любого файла с сервера. Приведенный ниже код работает в браузере, но не в приложении. Кажется, что приведенный ниже код не работает
document.body.appendChild(downloadLink);
downloadLink.click();
Мой полный код:
downloadFile(directory: string, filename: string = null): void {
const baseUrl = this.service.Base_Url 'download.php?dir=files/' directory '/amp;file=' filename;
this.service.process_download(baseUrl).subscribe(
(response: any) => {
//Check Blob size | File is available or not
if (response.size > 0) {
let dataType = response.type;
let binaryData = [];
binaryData.push(response);
let downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(new Blob(binaryData, { type: dataType }));
if (filename) {
downloadLink.setAttribute('download', filename);
}
document.body.appendChild(downloadLink);
downloadLink.click();
}
}
)
}
функция процесса:-
public process_download(url: any) {
if (this.Base_Url != undefined) {
return this.http.get(url, { responseType: 'blob' });
}
}
download.php это скрипт загрузки.
//Download function starts from here
$varFilePath = SOURCE_ROOT . $varDir . $varFile;
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=" . $varFile);
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($varFilePath));
header("Content-Description: File Transfer");
@readfile($varFilePath);
exit();
Ответ №1:
это код, связанный с просмотром, такой как веб-сайт на чистом javascript, поэтому он работает в браузере,
вам необходимо использовать этот плагин «передача файлов» для достижения на собственном устройстве. https://ionicframework.com/docs/native/file-transfer
Спасибо.
Комментарии:
1. спасибо за ответ. Я хочу сделать это без плагина для файлов.