我正在开发一个程序,我想在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保存在设备上。
答案 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上的相应路径。