2016-11-18 38 views
2

我正在研究一個程序,我想在pdf設備中保存pdf blob。 這是服務器端的代碼,在接收PDF數據爲'結果'的回調中。將pdf blob下載到Cordova Android設備中Android設備

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(數據)是由服務器返回的文件的blob。 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) 
    }; 

如果我給它發送一個PDF文件作爲HTTP響應的URL和我公司提供的API的URL作爲參數URI來cordovaFileTransfer.download,則PDF會保存。 請幫助我在設備上將此bob保存爲pdf。

回答

0

首先,獲取文件requesting the file system,然後從fileTransfer.download()從您的服務器下載。完成下載電話後,FileOpener(將打開一個彈出窗口,從Adobe Reader等應用程序中進行選擇)。注:確保包括通過CLI /終端的文件傳輸功能:

cordova plugin add cordova-plugin-file --save 
  • 導航到項目文件夾

  • 打開CLI /終端並鍵入:

    科爾多瓦插件添加 https://github.com/don/FileOpener.git

  • 成功下載並將文件存儲在設備上後(請參閱 )你打開它: window.plugins.fileOpener.open(「file:///sdcard/Android/data/com.example.application/document.doc」) 或iOS上的適當路徑。