ionicはファイルをダウンロードして開く機能を実現します(file-transferとfile-opener 2プラグイン)


アプリとして、ファイルをダウンロードしたり、ファイルを開いたりする機能は、シーンによっては必要です.cordova-plugin-file-transferとcordova-plugin-file-opener 2の2つのプラグインを使用すると、ionicでこの機能を比較的容易に実現できます.
1、インストール:
cordova plugin add cordova-plugin-file-transfer
cordova plugin add cordova-plugin-file-opener2

2、コード実現
angular.module("app").controller("accessoryDetailCtrl", ["$scope","$ionicLoading", 
  function ($scope $ionicLoading) {
    "use strict";
    
    $scope.downLoadFile = (downloadUrl) => {
      let fileTransfer = new FileTransfer(),
        uri = encodeURI(downloadUrl), //        
        fileUrl = cordova.file.dataDirectory + uri.substr(uri.lastIndexOf("/") + 1); //        
      fileTransfer.download(uri, fileUrl, entry => {
        entry.file(data => {
          cordova.plugins.fileOpener2.showOpenWithDialog(fileURL, data.type); // showOpenWithDialog                 
        });
        console.log("download accessory successful. accessory information : " + JSON.stringify(entry));
      }, error => {
        console.error("download accessory fail. Because of : " + JSON.stringify(error));
      });

      fileTransfer.onprogress = function(progressEvent) { //       loading  
        const percentFinished = 99;
        let downloadProgress = Math.round((progressEvent.loaded / progressEvent.total) * $scope.percentage);
        $ionicLoading.show({
          template: "    " + downloadProgress + "%"
        });
        downloadProgress > percentFinished && $ionicLoading.hide();
      };
    };
    
  }]);

3、注意事項file-transferはダウンロードに加えてファイルをアップロードする機能をサポートしているが、ダウンロード時に注意しなければならないのはダウンロードのアドレスであり、iosとandroidはパスが異なり、同じパスを見つけたり、別々に処理したりすることができ、ここではcordovaを使用する.file.DataDirectory,iosとandroidは同じパスをダウンロードします
file-opener 2を使用する場合はmineTypeを入力する必要があります.これはfile-transferで取得できます.file-opener 2は、私たちが使用しているshowOpenWithDialogメソッドのほか、openメソッドが携帯電話に付属しているオープン機能を呼び出し、androidのバージョン更新を実現したり、新しいバージョンのインストールをダウンロードしたり(後で書く時間があり、ネット上の関連ドキュメントも多い)他にuninstallやappIstalled機能があり、プロジェクトでは使用されず、研究されていません.
最後に、android 7、android 8でfile-transferプラグインを使用するには特別な処理が必要です.詳細はgithubcordova-plugin-file-transferを参照してください.