在Android设备上使用FileTransfer插件Phonegap保存PDF

Where to save a PDF on Android device using FileTransfer plugin Phonegap

本文关键字:插件 FileTransfer Phonegap 保存 PDF Android      更新时间:2023-09-26

我试图在我的phonegap应用程序中下载PDF,然后立即打开它,但我得到一个文件未找到错误。它似乎可以下载。下面是我的代码:

    // 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...');

我也想知道在哪里保存这样的文件最好的地方,应该是应用程序关闭后可用?

fileTransfer的第二个参数。下载是要下载PDF文件的设备位置。您正在设置var fileURL = 'cdvfile://localhost/persistent/com.mycompany.myApp/';我相信这是不存在的。你可以使用文件系统插件首先获得文件在你的设备上的位置,然后保存在设备上。您可以使用下面的代码快照。

    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, {});
                    }

希望对你有帮助。

即使我是新的android,但我认为有问题在URI

要在android中打开一个Uri,它应该有这样的结构文件:///存储/……(应该有3个反斜杠)

你可以在这里获得更多细节

保存pdf文件的最佳位置是你的存储卡或内部存储器。然后,即使在应用程序关闭后,pdf也可以在您的设备中使用。

如果你希望有相同的pdf文件,在不同的设备上可用,同时在不同的设备上测试你的应用程序/甚至在模拟器中,你可以把它保存在你的android项目的assert文件夹。

希望能有所帮助