在Cordova Android App中将pdf blob下载到设备

时间:2016-11-18 13:58:15

标签: android cordova

我正在开发一个程序,我想在Android设备中保存pdf blob。 这是回调中的服务器端代码,它接收pdf数据作为'结果'。

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(data)中的数据是服务器返回的文件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保存在设备上。

1 个答案:

答案 0 :(得分:0)

首先,按requesting the file system获取文件,然后使用fileTransfer.download()从服务器下载该文件。完成下载后,调用FileOpener(将打开一个弹出窗口,从Adobe Reader等应用程序中进行选择)。注意:确保通过CLI /终端包含FileTransfer功能:

cordova plugin add cordova-plugin-file --save
  • 导航到项目文件夹

  • 打开CLI /终端并输入:

    cordova插件添加    https://github.com/don/FileOpener.git

  • 在设备上成功下载并存储文件后(请参阅 上面你打开它: window.plugins.fileOpener.open("文件:///sdcard/Android/data/com.example.application/document.doc") 或iOS上的相应路径。