我正在尝试在我的phonegap应用程序中下载PDF,然后立即打开它,但是我收到了File not Found错误。它似乎下载。这是我的代码:
// Download
var url = "https://example/example.pdf";
var fileTransfer = new FileTransfer();
var uri = encodeURI(url);
var fileURL = 'cdvfile://localhost/persistent/com.mycompany.myApp/';
var fileName = 'example.pdf';
fileTransfer.download(
uri,
fileURL,
function (entry) {
alert("download complete: " + entry.fullPath);
// Open
cordova.plugins.fileOpener2.open(
fileURL + fileName,
'application/pdf',
{
error: function (errorObj) {
alert('Error status: ' + errorObj.status + ' - Error message: ' + errorObj.message + ' ' + errorObj.fileURL);
},
success: function () {
alert('file opened successfully');
}
}
);
},
function (error) {
alert("download error source " + error.source);
alert("download error target " + error.target);
alert("upload error code" + error.code);
}
);
alert('Downloading...');
我还想知道保存这样的文件的最佳位置在应用程序关闭后应该可用吗?
答案 0 :(得分:1)
fileTransfer.download的第二个参数是设备上要下载pdf文件的位置。 您正在设置var fileURL =' cdvfile://localhost/persistent/com.mycompany.myApp/' ;;我认为不存在。您可以使用文件系统插件首先获取设备上的文件位置,然后将其保存在设备上。你可以使用下面的代码snapet。
var url = "https://example/example.pdf";
var uri = encodeURI(url);
//var fileURL = 'cdvfile://localhost/persistent/com.mycompany.myApp/';
// var fileName = 'example.pdf';
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
function gotFS(fileSystem) {
fileSystem.root.getDirectory("Dir_NAME", {
create: true,
exclusive: false
}, gotDirectory, fail);
}
function gotDirectory(entry) {
entry.getFile('yourFileNAme', {
create: true,
exclusive: false
}, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
filePath = fileEntry.fullPath;
var fileTransfer = new FileTransfer();
fileTransfer.download(
'uri', filePath, function(entry) {
console.log("success");
//perform you launch task
}, function(error) {
console.log("error");
}, true, {});
}
我希望它会对你有所帮助。
答案 1 :(得分:1)
即使我是Android新手,但我认为URI存在问题
要在android中打开一个Uri,它应该有一个类似的结构 文件:///存储/ .... (应该有3个反斜杠)
您可以获得更多详细信息here
保存pdf的最佳位置可以是您的SD卡或内部存储空间。然后,即使应用程序关闭,pdf也将在您的设备中提供。
如果你想拥有相同的pdf文件,可以在不同的设备中使用不同的设备,甚至在模拟器中测试你的应用程序,你可以将它保存在android项目的assert文件夹中。
希望这会有所帮助