2016-11-18 13 views
2

私はアンドロイドデバイスにpdf BLOBを保存するプログラムを作成しています。 これは、 '結果'としてpdfデータを受け取るコールバック内のサーバーサイドコードです。Cordova Android Appでデバイスにblobをダウンロードする

var file = new Blob([result.data], { 
      type: 'application/pdf;charset=utf-8;' 
     }); 
     return file; 
     }); 

クライアント側では、次のコードはChromeのデバッグブラウザで動作し、pdfは正常にダウンロードされます。しかし、デバイス上で、私は次のエラーを取得する:

ここ
11-18 18:13:27.255 10504-10707/? D/FileTransfer: download blob:file:///e9088aac-8525-4071-9280-164a6e15c22e to file:///storage/emulated/0/Download/loanContract_11-10-2016_9-29-59-715.pdf 
11-18 18:13:27.255 10504-10707/? E/FileTransfer: Unsupported URI: blob:file:///e9088aac-8525-4071-9280-164a6e15c22e 

window.URL.createObjectURL内のデータ(データ)を、サーバーが返すファイルブロブです。 Phonegap/Cordova 3.6 - Download of file through blob:fileは問題を解決するのに私を助けませんでした。

var fileURL = window.URL.createObjectURL(data); 
        $scope.content = data; 
        a.href = fileURL; 
        a.download = fileName; 
        a.click(); 
        console.log("Inside parent function"); 
        $scope.fileName = fileName; 

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (dirEntry) {     
       download($scope.fileURL, dirEntry.toURL()+'Download/'+ $scope.fileName) ; 
      }, function() {}); 


    var download = function (uri, fileURL) { 
     $cordovaFileTransfer.download(
      uri, 
      fileURL, 
      function (success) { 
       console.log(success); 
      }, 
      function (err) { 
       console.log(err); 
      }, true) 
    }; 

私はHTTPレスポンスとしてpdfファイルを送信し、私はcordovaFileTransfer.downloadにパラメータのURIとしてAPIのURLを提供し、URLを与える場合は、PDFファイルが保存されます。 このボブをデバイスにpdfとして保存すると便利です。

答えて

0

まず、ファイルをrequesting the file systemで取得し、fileTransfer.download()でサーバーからダウンロードします。ダウンロード完了後、FileOpener(Adobe Readerなどのアプリケーションから選択するポップアップが開きます)を呼び出します。注:プロジェクトフォルダ

  • オープンCLI /ターミナルに

    cordova plugin add cordova-plugin-file --save 
    
    • 移動し、で入力します:CLI /ターミナルを経由して変数をFileTransfer機能が含まれていることを確認します

      コルドバプラグインを を追加https://github.com/don/FileOpener.git

    • ファイルをデバイスに正常にダウンロードして保存した後(上記の)を開きます。 window.plugins.fileOpener.open( "file:///sdcard/Android/data/com.example.application/document.doc") またはiOSの適切なパスです。

  • 関連する問題