#php #ionic-framework #capacitor #ionic5
Вопрос:
Я застрял на загрузке файла/вложения в ионном конденсаторе.
Для этого я использовал приведенные ниже методы, но они не работают, Может ли кто-нибудь предложить мне это?
Первый Способ:-
download(fileURL: any, filename: any) {
this.platform.ready().then(() => {
const fileTransfer: FileTransferObject = this.transfer.create();
let url = encodeURI(fileURL); // *PHP FILE PATH download.php*
let path = null;
// //Check plateform
if (this.platform.is('ios')) {
path = this.file.documentsDirectory;
}
else {
path = this.file.externalDataDirectory;
}
// //Process download
fileTransfer.download(url, path filename, false).then((entry) => {
console.log('download complete: ' entry.toURL());
}, (error) => {
console.log('download EROR: ' JSON.stringify(error));
});
});
}
**
Результат:- Ошибка, код ошибки 3 статус 401
**
Второй способ:-
download(fileURL: any, filename: any) {
this.platform.ready().then(() => {
let url = encodeURI(fileURL);// *PHP FILE PATH download.php*
let path = null;
// //Check plateform
if (this.platform.is('ios')) {
path = this.file.documentsDirectory;
}
else {
path = this.file.externalDataDirectory;
}
this.http.get(url, { responseType: "arraybuffer" }).subscribe(
(imageBlob: any) => {
console.log('Blob' imageBlob);
return this.file.writeFile(path, filename, imageBlob, { replace: true, append: false }
).then(file => { console.log(JSON.stringify(file)); })
.catch(err => {
alert(JSON.stringify("Error 1: " err));
});
}, error => {
alert(JSON.stringify("Error 2: " error));
console.log(error);
}
);
});
}
Результат:- Ошибки нет, но файл не сохраняется на устройстве.
**
Результат симулятора:- Ввод/Конденсатор/Консоль: Файл: http://localhost/main.js
- Строка 181 — Msg: {«isFile»:true,»isDirectory»:false,»name»:»favicon__1_16244547901624879637.png»,»fullPath»:»/favicon__1_16244547901624879637.png»,»filesystem»:»<FileSystem: файлы>»,»nativeURL»:»файл:///данные/пользователь/0/com.ionic.app/файлы/favicon__1_16244547901624879637.png»}
**
download.php файл:-
//used for download attachment
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
header("Access-Control-Allow-Methods: GET");
$varFile = $_GET['file'];
$varDir = ($_GET['dir'] != '') ? $_GET['dir'] : '';
$ImagePath = $arrConfig['sourceRoot'] . $varDir . $varFile;
if (file_exists($ImagePath)) {
//Download function starts from here
$varFilePath = SOURCE_ROOT . $varDir . $varFile;
header("Pragma: public");
header("Expires: 0");
header("Content-Description: File Transfer");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=" . $varFile);
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($varFilePath));
@readfile($varFilePath);
exit();
}
Комментарии:
1. Есть путь, упомянутый в этом nativeURL…?
2. Привет @nice_dev, да, есть. download.php
3.
401
означает «несанкционированный» …4. @DeepakDholiyan Я имел в виду это
,"nativeURL":"file:///data/user/0/com.ionic.app/files/favicon__1_16244547901624879637.png"
5. @MartinZeitler, я знаю, но, пожалуйста, скажите мне решение.