Загрузка ионных файлов не работает в собственном приложении, но работает в веб-приложении (браузер)

#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. спасибо за ответ. Я хочу сделать это без плагина для файлов.