загрузка файла конденсатора ionic 5 с сервера с использованием PHP

#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, я знаю, но, пожалуйста, скажите мне решение.