私はアンドロイドデバイスに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として保存すると便利です。