Saving file to Downloads directory using Ionic 3












4















i know this link: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#where-to-store-files



but i would like to save the file in Downloads directory. Is this possible to save the file in any path using Ionic? If so, please, share the example.



Here's the code:



downloadImage(image) {

this.platform.ready().then(() => {

const fileTransfer: TransferObject = this.transfer.create();

const imageLocation = `${cordova.file.applicationDirectory}www/assets/img/${image}`;

fileTransfer.download(imageLocation, cordova.file.externalDataDirectory + image).then((entry) => {

const alertSuccess = this.alertCtrl.create({
title: `Download Succeeded!`,
subTitle: `${image} was successfully downloaded to: ${entry.toURL()}`,
buttons: ['Ok']
});

alertSuccess.present();

}, (error) => {

const alertFailure = this.alertCtrl.create({
title: `Download Failed!`,
subTitle: `${image} was not successfully downloaded. Error code: ${error.code}`,
buttons: ['Ok']
});

alertFailure.present();

});

});

}


Basically I want save the file in location that is visible to the user.










share|improve this question





























    4















    i know this link: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#where-to-store-files



    but i would like to save the file in Downloads directory. Is this possible to save the file in any path using Ionic? If so, please, share the example.



    Here's the code:



    downloadImage(image) {

    this.platform.ready().then(() => {

    const fileTransfer: TransferObject = this.transfer.create();

    const imageLocation = `${cordova.file.applicationDirectory}www/assets/img/${image}`;

    fileTransfer.download(imageLocation, cordova.file.externalDataDirectory + image).then((entry) => {

    const alertSuccess = this.alertCtrl.create({
    title: `Download Succeeded!`,
    subTitle: `${image} was successfully downloaded to: ${entry.toURL()}`,
    buttons: ['Ok']
    });

    alertSuccess.present();

    }, (error) => {

    const alertFailure = this.alertCtrl.create({
    title: `Download Failed!`,
    subTitle: `${image} was not successfully downloaded. Error code: ${error.code}`,
    buttons: ['Ok']
    });

    alertFailure.present();

    });

    });

    }


    Basically I want save the file in location that is visible to the user.










    share|improve this question



























      4












      4








      4


      2






      i know this link: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#where-to-store-files



      but i would like to save the file in Downloads directory. Is this possible to save the file in any path using Ionic? If so, please, share the example.



      Here's the code:



      downloadImage(image) {

      this.platform.ready().then(() => {

      const fileTransfer: TransferObject = this.transfer.create();

      const imageLocation = `${cordova.file.applicationDirectory}www/assets/img/${image}`;

      fileTransfer.download(imageLocation, cordova.file.externalDataDirectory + image).then((entry) => {

      const alertSuccess = this.alertCtrl.create({
      title: `Download Succeeded!`,
      subTitle: `${image} was successfully downloaded to: ${entry.toURL()}`,
      buttons: ['Ok']
      });

      alertSuccess.present();

      }, (error) => {

      const alertFailure = this.alertCtrl.create({
      title: `Download Failed!`,
      subTitle: `${image} was not successfully downloaded. Error code: ${error.code}`,
      buttons: ['Ok']
      });

      alertFailure.present();

      });

      });

      }


      Basically I want save the file in location that is visible to the user.










      share|improve this question
















      i know this link: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#where-to-store-files



      but i would like to save the file in Downloads directory. Is this possible to save the file in any path using Ionic? If so, please, share the example.



      Here's the code:



      downloadImage(image) {

      this.platform.ready().then(() => {

      const fileTransfer: TransferObject = this.transfer.create();

      const imageLocation = `${cordova.file.applicationDirectory}www/assets/img/${image}`;

      fileTransfer.download(imageLocation, cordova.file.externalDataDirectory + image).then((entry) => {

      const alertSuccess = this.alertCtrl.create({
      title: `Download Succeeded!`,
      subTitle: `${image} was successfully downloaded to: ${entry.toURL()}`,
      buttons: ['Ok']
      });

      alertSuccess.present();

      }, (error) => {

      const alertFailure = this.alertCtrl.create({
      title: `Download Failed!`,
      subTitle: `${image} was not successfully downloaded. Error code: ${error.code}`,
      buttons: ['Ok']
      });

      alertFailure.present();

      });

      });

      }


      Basically I want save the file in location that is visible to the user.







      android cordova ionic-framework ionic3






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 1 '18 at 14:21









      EKOlog

      192316




      192316










      asked Mar 1 '18 at 13:50









      bambaniaszbambaniasz

      76110




      76110
























          5 Answers
          5






          active

          oldest

          votes


















          3














          To download the File to the Download directory you need to use Cordova File and FileTransfer Plugins.



          import { File } from '@ionic-native/file';
          import { FileTransfer } from '@ionic-native/file-transfer';

          constructor(private transfer: FileTransfer) { }

          fileTransfer: FileTransferObject = this.transfer.create();

          //Use your File Url and name

          downloadFile(file) {
          // Some Loading
          this.fileTransfer.download(url, this.file.externalRootDirectory +
          '/Download/' + file).then(response => {
          console.log(response);
          this.dismissLoading();
          this.presentToast('File has been downloaded to the Downloads folder. View
          it..')
          })
          .catch(err => {
          this.dismissLoading();
          console.log(err)
          });
          }


          Hope it helps.






          share|improve this answer
























          • Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

            – bambaniasz
            Jul 23 '18 at 8:08






          • 1





            Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

            – fiza khan
            Jul 23 '18 at 9:09








          • 1





            Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

            – fiza khan
            Jul 23 '18 at 9:50






          • 1





            Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

            – fiza khan
            Jul 24 '18 at 4:31






          • 1





            Please follow this link stackoverflow.com/questions/46143238/…

            – fiza khan
            Jul 26 '18 at 5:00



















          2














          the problem was lack of permission. Here is the working code that can download file to downloads directory:



          downloadFile() {
          this.fileTransfer.download("https://cdn.pixabay.com/photo/2017/01/06/23/21/soap-bubble-1959327_960_720.jpg", this.file.externalRootDirectory +
          '/Download/' + "soap-bubble-1959327_960_720.jpg").then()
          }

          getPermission() {
          this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
          .then(status => {
          if (status.hasPermission) {
          this.downloadFile();
          }
          else {
          this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
          .then(status => {
          if(status.hasPermission) {
          this.downloadFile();
          }
          });
          }
          });
          }





          share|improve this answer































            1














            import { File } from '@ionic-native/file';
            import { FileTransfer } from '@ionic-native/file-transfer';
            constructor(private file: File, private transfer: FileTransfer){}

            let link = 'url_to_download_file';
            let path = '';
            let dir_name = 'Download'; // directory to download - you can also create new directory
            let file_name = 'file.txt'; //any file name you like

            const fileTransfer: FileTransferObject = this.transfer.create();
            let result = this.file.createDir(this.file.externalRootDirectory, dir_name, true);
            result.then((resp) => {
            path = resp.toURL();
            console.log(path);
            fileTransfer.download(link, path + file_name).then((entry) => {
            console.log('download complete: ' + entry.toURL());
            }, (error) => {
            console.log(error)
            });
            }, (err) => {
            console.log('error on creating path : ' + err);
            });





            share|improve this answer































              0














              This code - ionic 3 capacitor - from josh morony takes a photo from the tmp directory and writes to the Document directory in this section using the FileSystem API the retrieves and manipulates the path



                      Filesystem.writeFile({
              data: result.data,
              path: fileName,
              directory: FilesystemDirectory.Data
              })



              getFromPhotos() {

              let options = {
              resultType: CameraResultType.Uri
              };

              Camera.getPhoto(options).then(

              (photo) => {

              Filesystem.readFile({
              path: photo.path
              }).then((result) => {

              // let date = new Date(),
              // time = date.getTime(),
              time = 'bilder',
              fileName = time + '.jpeg';

              Filesystem.writeFile({
              data: result.data,
              path: fileName,
              directory: FilesystemDirectory.Data
              }).then((result) => {
              Filesystem.getUri({
              directory: FilesystemDirectory.Data,
              path: fileName
              }).then((result) => {
              console.log(result);
              let path = result.uri.replace('file://', '_capacitor_');
              this.image = this.sanitizer.bypassSecurityTrustResourceUrl(path);
              }, (err) => {
              console.log(err);
              });

              }, (err) => {
              console.log(err);
              });

              }, (err) => {
              console.log(err);
              });

              }, (err) => {
              console.log(err);
              }

              );


              }



              In ionic 3 you have to use the cordova File plugin - please google. It is pretty straight forward to understand: you define the original directory where the file is, the original name of the file, the target directory, and a new name for the file inside that function. The principle is the same.






              share|improve this answer































                0














                I know this is late, but I've always had issues with the FileTransfer plugin. Maybe it is just me. I've instead had success with the writeFile() method of the File plugin.



                I'm still working on iOS, but for Android here is what I have:



                import { File } from "@ionic-native/file";

                constructor(private fileSystem: File) {}


                Then, in whatever function you have the logic to save the file, we have:



                let path = this.fileSystem.externalRootDirectory + '/Download/'; // for Android
                let filename = 'myNewFile.pdf';
                this.fileSystem.writeFile(path, filename, File, { replace: true }).then(() => {
                this.toastCtrl.showToast('File has been downloaded. Please check your downloads folder.');
                }, (err) => {
                alert("Sorry. An error occurred downloading the file: " + err);
                }
                );


                As I said, I'm still looking out for what path to use for iOS. And I'm still wondering how to pop up the notification that usually comes up when a download actually goes to the download folder. But at least I am able to save directly in the download folder of Android.






                share|improve this answer

























                  Your Answer






                  StackExchange.ifUsing("editor", function () {
                  StackExchange.using("externalEditor", function () {
                  StackExchange.using("snippets", function () {
                  StackExchange.snippets.init();
                  });
                  });
                  }, "code-snippets");

                  StackExchange.ready(function() {
                  var channelOptions = {
                  tags: "".split(" "),
                  id: "1"
                  };
                  initTagRenderer("".split(" "), "".split(" "), channelOptions);

                  StackExchange.using("externalEditor", function() {
                  // Have to fire editor after snippets, if snippets enabled
                  if (StackExchange.settings.snippets.snippetsEnabled) {
                  StackExchange.using("snippets", function() {
                  createEditor();
                  });
                  }
                  else {
                  createEditor();
                  }
                  });

                  function createEditor() {
                  StackExchange.prepareEditor({
                  heartbeatType: 'answer',
                  autoActivateHeartbeat: false,
                  convertImagesToLinks: true,
                  noModals: true,
                  showLowRepImageUploadWarning: true,
                  reputationToPostImages: 10,
                  bindNavPrevention: true,
                  postfix: "",
                  imageUploader: {
                  brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                  contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                  allowUrls: true
                  },
                  onDemand: true,
                  discardSelector: ".discard-answer"
                  ,immediatelyShowMarkdownHelp:true
                  });


                  }
                  });














                  draft saved

                  draft discarded


















                  StackExchange.ready(
                  function () {
                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49051139%2fsaving-file-to-downloads-directory-using-ionic-3%23new-answer', 'question_page');
                  }
                  );

                  Post as a guest















                  Required, but never shown

























                  5 Answers
                  5






                  active

                  oldest

                  votes








                  5 Answers
                  5






                  active

                  oldest

                  votes









                  active

                  oldest

                  votes






                  active

                  oldest

                  votes









                  3














                  To download the File to the Download directory you need to use Cordova File and FileTransfer Plugins.



                  import { File } from '@ionic-native/file';
                  import { FileTransfer } from '@ionic-native/file-transfer';

                  constructor(private transfer: FileTransfer) { }

                  fileTransfer: FileTransferObject = this.transfer.create();

                  //Use your File Url and name

                  downloadFile(file) {
                  // Some Loading
                  this.fileTransfer.download(url, this.file.externalRootDirectory +
                  '/Download/' + file).then(response => {
                  console.log(response);
                  this.dismissLoading();
                  this.presentToast('File has been downloaded to the Downloads folder. View
                  it..')
                  })
                  .catch(err => {
                  this.dismissLoading();
                  console.log(err)
                  });
                  }


                  Hope it helps.






                  share|improve this answer
























                  • Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

                    – bambaniasz
                    Jul 23 '18 at 8:08






                  • 1





                    Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

                    – fiza khan
                    Jul 23 '18 at 9:09








                  • 1





                    Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

                    – fiza khan
                    Jul 23 '18 at 9:50






                  • 1





                    Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

                    – fiza khan
                    Jul 24 '18 at 4:31






                  • 1





                    Please follow this link stackoverflow.com/questions/46143238/…

                    – fiza khan
                    Jul 26 '18 at 5:00
















                  3














                  To download the File to the Download directory you need to use Cordova File and FileTransfer Plugins.



                  import { File } from '@ionic-native/file';
                  import { FileTransfer } from '@ionic-native/file-transfer';

                  constructor(private transfer: FileTransfer) { }

                  fileTransfer: FileTransferObject = this.transfer.create();

                  //Use your File Url and name

                  downloadFile(file) {
                  // Some Loading
                  this.fileTransfer.download(url, this.file.externalRootDirectory +
                  '/Download/' + file).then(response => {
                  console.log(response);
                  this.dismissLoading();
                  this.presentToast('File has been downloaded to the Downloads folder. View
                  it..')
                  })
                  .catch(err => {
                  this.dismissLoading();
                  console.log(err)
                  });
                  }


                  Hope it helps.






                  share|improve this answer
























                  • Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

                    – bambaniasz
                    Jul 23 '18 at 8:08






                  • 1





                    Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

                    – fiza khan
                    Jul 23 '18 at 9:09








                  • 1





                    Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

                    – fiza khan
                    Jul 23 '18 at 9:50






                  • 1





                    Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

                    – fiza khan
                    Jul 24 '18 at 4:31






                  • 1





                    Please follow this link stackoverflow.com/questions/46143238/…

                    – fiza khan
                    Jul 26 '18 at 5:00














                  3












                  3








                  3







                  To download the File to the Download directory you need to use Cordova File and FileTransfer Plugins.



                  import { File } from '@ionic-native/file';
                  import { FileTransfer } from '@ionic-native/file-transfer';

                  constructor(private transfer: FileTransfer) { }

                  fileTransfer: FileTransferObject = this.transfer.create();

                  //Use your File Url and name

                  downloadFile(file) {
                  // Some Loading
                  this.fileTransfer.download(url, this.file.externalRootDirectory +
                  '/Download/' + file).then(response => {
                  console.log(response);
                  this.dismissLoading();
                  this.presentToast('File has been downloaded to the Downloads folder. View
                  it..')
                  })
                  .catch(err => {
                  this.dismissLoading();
                  console.log(err)
                  });
                  }


                  Hope it helps.






                  share|improve this answer













                  To download the File to the Download directory you need to use Cordova File and FileTransfer Plugins.



                  import { File } from '@ionic-native/file';
                  import { FileTransfer } from '@ionic-native/file-transfer';

                  constructor(private transfer: FileTransfer) { }

                  fileTransfer: FileTransferObject = this.transfer.create();

                  //Use your File Url and name

                  downloadFile(file) {
                  // Some Loading
                  this.fileTransfer.download(url, this.file.externalRootDirectory +
                  '/Download/' + file).then(response => {
                  console.log(response);
                  this.dismissLoading();
                  this.presentToast('File has been downloaded to the Downloads folder. View
                  it..')
                  })
                  .catch(err => {
                  this.dismissLoading();
                  console.log(err)
                  });
                  }


                  Hope it helps.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jul 13 '18 at 5:27









                  fiza khanfiza khan

                  913419




                  913419













                  • Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

                    – bambaniasz
                    Jul 23 '18 at 8:08






                  • 1





                    Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

                    – fiza khan
                    Jul 23 '18 at 9:09








                  • 1





                    Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

                    – fiza khan
                    Jul 23 '18 at 9:50






                  • 1





                    Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

                    – fiza khan
                    Jul 24 '18 at 4:31






                  • 1





                    Please follow this link stackoverflow.com/questions/46143238/…

                    – fiza khan
                    Jul 26 '18 at 5:00



















                  • Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

                    – bambaniasz
                    Jul 23 '18 at 8:08






                  • 1





                    Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

                    – fiza khan
                    Jul 23 '18 at 9:09








                  • 1





                    Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

                    – fiza khan
                    Jul 23 '18 at 9:50






                  • 1





                    Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

                    – fiza khan
                    Jul 24 '18 at 4:31






                  • 1





                    Please follow this link stackoverflow.com/questions/46143238/…

                    – fiza khan
                    Jul 26 '18 at 5:00

















                  Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

                  – bambaniasz
                  Jul 23 '18 at 8:08





                  Does this code really works for You? It doesn't for me. I can't save files in this directory. I am only able to save files in file.dataDirectory.

                  – bambaniasz
                  Jul 23 '18 at 8:08




                  1




                  1





                  Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

                  – fiza khan
                  Jul 23 '18 at 9:09







                  Yes it works and it saves the files in the Downloads directory. Have you installed ionic file plugin??

                  – fiza khan
                  Jul 23 '18 at 9:09






                  1




                  1





                  Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

                  – fiza khan
                  Jul 23 '18 at 9:50





                  Yes it appears in the Downloads directory i have tested this and implemented this code in my app.

                  – fiza khan
                  Jul 23 '18 at 9:50




                  1




                  1





                  Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

                  – fiza khan
                  Jul 24 '18 at 4:31





                  Yes you are right this issue appears in the android 6 or greater. For this you need to ask the permission from the user at run time. This can be solved using Android Permissions plugins. Try this code on android version less than 6 and your file will be saved successfully.

                  – fiza khan
                  Jul 24 '18 at 4:31




                  1




                  1





                  Please follow this link stackoverflow.com/questions/46143238/…

                  – fiza khan
                  Jul 26 '18 at 5:00





                  Please follow this link stackoverflow.com/questions/46143238/…

                  – fiza khan
                  Jul 26 '18 at 5:00













                  2














                  the problem was lack of permission. Here is the working code that can download file to downloads directory:



                  downloadFile() {
                  this.fileTransfer.download("https://cdn.pixabay.com/photo/2017/01/06/23/21/soap-bubble-1959327_960_720.jpg", this.file.externalRootDirectory +
                  '/Download/' + "soap-bubble-1959327_960_720.jpg").then()
                  }

                  getPermission() {
                  this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                  .then(status => {
                  if (status.hasPermission) {
                  this.downloadFile();
                  }
                  else {
                  this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                  .then(status => {
                  if(status.hasPermission) {
                  this.downloadFile();
                  }
                  });
                  }
                  });
                  }





                  share|improve this answer




























                    2














                    the problem was lack of permission. Here is the working code that can download file to downloads directory:



                    downloadFile() {
                    this.fileTransfer.download("https://cdn.pixabay.com/photo/2017/01/06/23/21/soap-bubble-1959327_960_720.jpg", this.file.externalRootDirectory +
                    '/Download/' + "soap-bubble-1959327_960_720.jpg").then()
                    }

                    getPermission() {
                    this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                    .then(status => {
                    if (status.hasPermission) {
                    this.downloadFile();
                    }
                    else {
                    this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                    .then(status => {
                    if(status.hasPermission) {
                    this.downloadFile();
                    }
                    });
                    }
                    });
                    }





                    share|improve this answer


























                      2












                      2








                      2







                      the problem was lack of permission. Here is the working code that can download file to downloads directory:



                      downloadFile() {
                      this.fileTransfer.download("https://cdn.pixabay.com/photo/2017/01/06/23/21/soap-bubble-1959327_960_720.jpg", this.file.externalRootDirectory +
                      '/Download/' + "soap-bubble-1959327_960_720.jpg").then()
                      }

                      getPermission() {
                      this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                      .then(status => {
                      if (status.hasPermission) {
                      this.downloadFile();
                      }
                      else {
                      this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                      .then(status => {
                      if(status.hasPermission) {
                      this.downloadFile();
                      }
                      });
                      }
                      });
                      }





                      share|improve this answer













                      the problem was lack of permission. Here is the working code that can download file to downloads directory:



                      downloadFile() {
                      this.fileTransfer.download("https://cdn.pixabay.com/photo/2017/01/06/23/21/soap-bubble-1959327_960_720.jpg", this.file.externalRootDirectory +
                      '/Download/' + "soap-bubble-1959327_960_720.jpg").then()
                      }

                      getPermission() {
                      this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                      .then(status => {
                      if (status.hasPermission) {
                      this.downloadFile();
                      }
                      else {
                      this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
                      .then(status => {
                      if(status.hasPermission) {
                      this.downloadFile();
                      }
                      });
                      }
                      });
                      }






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 9 '18 at 12:36









                      bambaniaszbambaniasz

                      76110




                      76110























                          1














                          import { File } from '@ionic-native/file';
                          import { FileTransfer } from '@ionic-native/file-transfer';
                          constructor(private file: File, private transfer: FileTransfer){}

                          let link = 'url_to_download_file';
                          let path = '';
                          let dir_name = 'Download'; // directory to download - you can also create new directory
                          let file_name = 'file.txt'; //any file name you like

                          const fileTransfer: FileTransferObject = this.transfer.create();
                          let result = this.file.createDir(this.file.externalRootDirectory, dir_name, true);
                          result.then((resp) => {
                          path = resp.toURL();
                          console.log(path);
                          fileTransfer.download(link, path + file_name).then((entry) => {
                          console.log('download complete: ' + entry.toURL());
                          }, (error) => {
                          console.log(error)
                          });
                          }, (err) => {
                          console.log('error on creating path : ' + err);
                          });





                          share|improve this answer




























                            1














                            import { File } from '@ionic-native/file';
                            import { FileTransfer } from '@ionic-native/file-transfer';
                            constructor(private file: File, private transfer: FileTransfer){}

                            let link = 'url_to_download_file';
                            let path = '';
                            let dir_name = 'Download'; // directory to download - you can also create new directory
                            let file_name = 'file.txt'; //any file name you like

                            const fileTransfer: FileTransferObject = this.transfer.create();
                            let result = this.file.createDir(this.file.externalRootDirectory, dir_name, true);
                            result.then((resp) => {
                            path = resp.toURL();
                            console.log(path);
                            fileTransfer.download(link, path + file_name).then((entry) => {
                            console.log('download complete: ' + entry.toURL());
                            }, (error) => {
                            console.log(error)
                            });
                            }, (err) => {
                            console.log('error on creating path : ' + err);
                            });





                            share|improve this answer


























                              1












                              1








                              1







                              import { File } from '@ionic-native/file';
                              import { FileTransfer } from '@ionic-native/file-transfer';
                              constructor(private file: File, private transfer: FileTransfer){}

                              let link = 'url_to_download_file';
                              let path = '';
                              let dir_name = 'Download'; // directory to download - you can also create new directory
                              let file_name = 'file.txt'; //any file name you like

                              const fileTransfer: FileTransferObject = this.transfer.create();
                              let result = this.file.createDir(this.file.externalRootDirectory, dir_name, true);
                              result.then((resp) => {
                              path = resp.toURL();
                              console.log(path);
                              fileTransfer.download(link, path + file_name).then((entry) => {
                              console.log('download complete: ' + entry.toURL());
                              }, (error) => {
                              console.log(error)
                              });
                              }, (err) => {
                              console.log('error on creating path : ' + err);
                              });





                              share|improve this answer













                              import { File } from '@ionic-native/file';
                              import { FileTransfer } from '@ionic-native/file-transfer';
                              constructor(private file: File, private transfer: FileTransfer){}

                              let link = 'url_to_download_file';
                              let path = '';
                              let dir_name = 'Download'; // directory to download - you can also create new directory
                              let file_name = 'file.txt'; //any file name you like

                              const fileTransfer: FileTransferObject = this.transfer.create();
                              let result = this.file.createDir(this.file.externalRootDirectory, dir_name, true);
                              result.then((resp) => {
                              path = resp.toURL();
                              console.log(path);
                              fileTransfer.download(link, path + file_name).then((entry) => {
                              console.log('download complete: ' + entry.toURL());
                              }, (error) => {
                              console.log(error)
                              });
                              }, (err) => {
                              console.log('error on creating path : ' + err);
                              });






                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Mar 29 '18 at 11:07









                              Gokulraj MahadheeraaGokulraj Mahadheeraa

                              92110




                              92110























                                  0














                                  This code - ionic 3 capacitor - from josh morony takes a photo from the tmp directory and writes to the Document directory in this section using the FileSystem API the retrieves and manipulates the path



                                          Filesystem.writeFile({
                                  data: result.data,
                                  path: fileName,
                                  directory: FilesystemDirectory.Data
                                  })



                                  getFromPhotos() {

                                  let options = {
                                  resultType: CameraResultType.Uri
                                  };

                                  Camera.getPhoto(options).then(

                                  (photo) => {

                                  Filesystem.readFile({
                                  path: photo.path
                                  }).then((result) => {

                                  // let date = new Date(),
                                  // time = date.getTime(),
                                  time = 'bilder',
                                  fileName = time + '.jpeg';

                                  Filesystem.writeFile({
                                  data: result.data,
                                  path: fileName,
                                  directory: FilesystemDirectory.Data
                                  }).then((result) => {
                                  Filesystem.getUri({
                                  directory: FilesystemDirectory.Data,
                                  path: fileName
                                  }).then((result) => {
                                  console.log(result);
                                  let path = result.uri.replace('file://', '_capacitor_');
                                  this.image = this.sanitizer.bypassSecurityTrustResourceUrl(path);
                                  }, (err) => {
                                  console.log(err);
                                  });

                                  }, (err) => {
                                  console.log(err);
                                  });

                                  }, (err) => {
                                  console.log(err);
                                  });

                                  }, (err) => {
                                  console.log(err);
                                  }

                                  );


                                  }



                                  In ionic 3 you have to use the cordova File plugin - please google. It is pretty straight forward to understand: you define the original directory where the file is, the original name of the file, the target directory, and a new name for the file inside that function. The principle is the same.






                                  share|improve this answer




























                                    0














                                    This code - ionic 3 capacitor - from josh morony takes a photo from the tmp directory and writes to the Document directory in this section using the FileSystem API the retrieves and manipulates the path



                                            Filesystem.writeFile({
                                    data: result.data,
                                    path: fileName,
                                    directory: FilesystemDirectory.Data
                                    })



                                    getFromPhotos() {

                                    let options = {
                                    resultType: CameraResultType.Uri
                                    };

                                    Camera.getPhoto(options).then(

                                    (photo) => {

                                    Filesystem.readFile({
                                    path: photo.path
                                    }).then((result) => {

                                    // let date = new Date(),
                                    // time = date.getTime(),
                                    time = 'bilder',
                                    fileName = time + '.jpeg';

                                    Filesystem.writeFile({
                                    data: result.data,
                                    path: fileName,
                                    directory: FilesystemDirectory.Data
                                    }).then((result) => {
                                    Filesystem.getUri({
                                    directory: FilesystemDirectory.Data,
                                    path: fileName
                                    }).then((result) => {
                                    console.log(result);
                                    let path = result.uri.replace('file://', '_capacitor_');
                                    this.image = this.sanitizer.bypassSecurityTrustResourceUrl(path);
                                    }, (err) => {
                                    console.log(err);
                                    });

                                    }, (err) => {
                                    console.log(err);
                                    });

                                    }, (err) => {
                                    console.log(err);
                                    });

                                    }, (err) => {
                                    console.log(err);
                                    }

                                    );


                                    }



                                    In ionic 3 you have to use the cordova File plugin - please google. It is pretty straight forward to understand: you define the original directory where the file is, the original name of the file, the target directory, and a new name for the file inside that function. The principle is the same.






                                    share|improve this answer


























                                      0












                                      0








                                      0







                                      This code - ionic 3 capacitor - from josh morony takes a photo from the tmp directory and writes to the Document directory in this section using the FileSystem API the retrieves and manipulates the path



                                              Filesystem.writeFile({
                                      data: result.data,
                                      path: fileName,
                                      directory: FilesystemDirectory.Data
                                      })



                                      getFromPhotos() {

                                      let options = {
                                      resultType: CameraResultType.Uri
                                      };

                                      Camera.getPhoto(options).then(

                                      (photo) => {

                                      Filesystem.readFile({
                                      path: photo.path
                                      }).then((result) => {

                                      // let date = new Date(),
                                      // time = date.getTime(),
                                      time = 'bilder',
                                      fileName = time + '.jpeg';

                                      Filesystem.writeFile({
                                      data: result.data,
                                      path: fileName,
                                      directory: FilesystemDirectory.Data
                                      }).then((result) => {
                                      Filesystem.getUri({
                                      directory: FilesystemDirectory.Data,
                                      path: fileName
                                      }).then((result) => {
                                      console.log(result);
                                      let path = result.uri.replace('file://', '_capacitor_');
                                      this.image = this.sanitizer.bypassSecurityTrustResourceUrl(path);
                                      }, (err) => {
                                      console.log(err);
                                      });

                                      }, (err) => {
                                      console.log(err);
                                      });

                                      }, (err) => {
                                      console.log(err);
                                      });

                                      }, (err) => {
                                      console.log(err);
                                      }

                                      );


                                      }



                                      In ionic 3 you have to use the cordova File plugin - please google. It is pretty straight forward to understand: you define the original directory where the file is, the original name of the file, the target directory, and a new name for the file inside that function. The principle is the same.






                                      share|improve this answer













                                      This code - ionic 3 capacitor - from josh morony takes a photo from the tmp directory and writes to the Document directory in this section using the FileSystem API the retrieves and manipulates the path



                                              Filesystem.writeFile({
                                      data: result.data,
                                      path: fileName,
                                      directory: FilesystemDirectory.Data
                                      })



                                      getFromPhotos() {

                                      let options = {
                                      resultType: CameraResultType.Uri
                                      };

                                      Camera.getPhoto(options).then(

                                      (photo) => {

                                      Filesystem.readFile({
                                      path: photo.path
                                      }).then((result) => {

                                      // let date = new Date(),
                                      // time = date.getTime(),
                                      time = 'bilder',
                                      fileName = time + '.jpeg';

                                      Filesystem.writeFile({
                                      data: result.data,
                                      path: fileName,
                                      directory: FilesystemDirectory.Data
                                      }).then((result) => {
                                      Filesystem.getUri({
                                      directory: FilesystemDirectory.Data,
                                      path: fileName
                                      }).then((result) => {
                                      console.log(result);
                                      let path = result.uri.replace('file://', '_capacitor_');
                                      this.image = this.sanitizer.bypassSecurityTrustResourceUrl(path);
                                      }, (err) => {
                                      console.log(err);
                                      });

                                      }, (err) => {
                                      console.log(err);
                                      });

                                      }, (err) => {
                                      console.log(err);
                                      });

                                      }, (err) => {
                                      console.log(err);
                                      }

                                      );


                                      }



                                      In ionic 3 you have to use the cordova File plugin - please google. It is pretty straight forward to understand: you define the original directory where the file is, the original name of the file, the target directory, and a new name for the file inside that function. The principle is the same.







                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered Jul 12 '18 at 21:08









                                      Ed DieEd Die

                                      139114




                                      139114























                                          0














                                          I know this is late, but I've always had issues with the FileTransfer plugin. Maybe it is just me. I've instead had success with the writeFile() method of the File plugin.



                                          I'm still working on iOS, but for Android here is what I have:



                                          import { File } from "@ionic-native/file";

                                          constructor(private fileSystem: File) {}


                                          Then, in whatever function you have the logic to save the file, we have:



                                          let path = this.fileSystem.externalRootDirectory + '/Download/'; // for Android
                                          let filename = 'myNewFile.pdf';
                                          this.fileSystem.writeFile(path, filename, File, { replace: true }).then(() => {
                                          this.toastCtrl.showToast('File has been downloaded. Please check your downloads folder.');
                                          }, (err) => {
                                          alert("Sorry. An error occurred downloading the file: " + err);
                                          }
                                          );


                                          As I said, I'm still looking out for what path to use for iOS. And I'm still wondering how to pop up the notification that usually comes up when a download actually goes to the download folder. But at least I am able to save directly in the download folder of Android.






                                          share|improve this answer






























                                            0














                                            I know this is late, but I've always had issues with the FileTransfer plugin. Maybe it is just me. I've instead had success with the writeFile() method of the File plugin.



                                            I'm still working on iOS, but for Android here is what I have:



                                            import { File } from "@ionic-native/file";

                                            constructor(private fileSystem: File) {}


                                            Then, in whatever function you have the logic to save the file, we have:



                                            let path = this.fileSystem.externalRootDirectory + '/Download/'; // for Android
                                            let filename = 'myNewFile.pdf';
                                            this.fileSystem.writeFile(path, filename, File, { replace: true }).then(() => {
                                            this.toastCtrl.showToast('File has been downloaded. Please check your downloads folder.');
                                            }, (err) => {
                                            alert("Sorry. An error occurred downloading the file: " + err);
                                            }
                                            );


                                            As I said, I'm still looking out for what path to use for iOS. And I'm still wondering how to pop up the notification that usually comes up when a download actually goes to the download folder. But at least I am able to save directly in the download folder of Android.






                                            share|improve this answer




























                                              0












                                              0








                                              0







                                              I know this is late, but I've always had issues with the FileTransfer plugin. Maybe it is just me. I've instead had success with the writeFile() method of the File plugin.



                                              I'm still working on iOS, but for Android here is what I have:



                                              import { File } from "@ionic-native/file";

                                              constructor(private fileSystem: File) {}


                                              Then, in whatever function you have the logic to save the file, we have:



                                              let path = this.fileSystem.externalRootDirectory + '/Download/'; // for Android
                                              let filename = 'myNewFile.pdf';
                                              this.fileSystem.writeFile(path, filename, File, { replace: true }).then(() => {
                                              this.toastCtrl.showToast('File has been downloaded. Please check your downloads folder.');
                                              }, (err) => {
                                              alert("Sorry. An error occurred downloading the file: " + err);
                                              }
                                              );


                                              As I said, I'm still looking out for what path to use for iOS. And I'm still wondering how to pop up the notification that usually comes up when a download actually goes to the download folder. But at least I am able to save directly in the download folder of Android.






                                              share|improve this answer















                                              I know this is late, but I've always had issues with the FileTransfer plugin. Maybe it is just me. I've instead had success with the writeFile() method of the File plugin.



                                              I'm still working on iOS, but for Android here is what I have:



                                              import { File } from "@ionic-native/file";

                                              constructor(private fileSystem: File) {}


                                              Then, in whatever function you have the logic to save the file, we have:



                                              let path = this.fileSystem.externalRootDirectory + '/Download/'; // for Android
                                              let filename = 'myNewFile.pdf';
                                              this.fileSystem.writeFile(path, filename, File, { replace: true }).then(() => {
                                              this.toastCtrl.showToast('File has been downloaded. Please check your downloads folder.');
                                              }, (err) => {
                                              alert("Sorry. An error occurred downloading the file: " + err);
                                              }
                                              );


                                              As I said, I'm still looking out for what path to use for iOS. And I'm still wondering how to pop up the notification that usually comes up when a download actually goes to the download folder. But at least I am able to save directly in the download folder of Android.







                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited Nov 15 '18 at 3:50









                                              jdv

                                              1,84332030




                                              1,84332030










                                              answered Nov 14 '18 at 17:27









                                              mateotherockmateotherock

                                              407




                                              407






























                                                  draft saved

                                                  draft discarded




















































                                                  Thanks for contributing an answer to Stack Overflow!


                                                  • Please be sure to answer the question. Provide details and share your research!

                                                  But avoid



                                                  • Asking for help, clarification, or responding to other answers.

                                                  • Making statements based on opinion; back them up with references or personal experience.


                                                  To learn more, see our tips on writing great answers.




                                                  draft saved


                                                  draft discarded














                                                  StackExchange.ready(
                                                  function () {
                                                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49051139%2fsaving-file-to-downloads-directory-using-ionic-3%23new-answer', 'question_page');
                                                  }
                                                  );

                                                  Post as a guest















                                                  Required, but never shown





















































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown

































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown







                                                  Popular posts from this blog

                                                  Xamarin.iOS Cant Deploy on Iphone

                                                  Glorious Revolution

                                                  Dulmage-Mendelsohn matrix decomposition in Python