2

我使用 Telerik app builder 平台来创建应用程序。我创建了下载图像功能。此功能适用于 android 设备,但不适用于 iOS。我不知道为什么它不起作用。

当用户使用 android 设备中的应用程序下载图像时,cordova 文件系统会创建目录并将图像保存到该目录中,并且图像也会显示在图库中。当用户在 iOS 中执行相同的操作时,它不会创建任何目录,并且图像不会显示在图库中。我还没有找到保存此图像的位置。

请提供有关如何将下载的图像保存在 iOS 库中的建议。

我的代码如下

function onDeviceReady() {
var that = this,
App = new downloadApp(),
fileName = "sample.png",
uri = encodeURI("http://www.telerik.com/sfimages/default-source/logos/app_builder.png"),
folderName = "test";

navigator.splashscreen.hide();
App.run(uri, fileName, folderName);
}

downloadApp.prototype = {
run: function (uri, fileName, folderName) {
var that = this,
    filePath = "";

document.getElementById("download").addEventListener("click", function () {
    that.getFilesystem(
        function (fileSystem) {
            console.log(fileSystem);
            that.getFolder(fileSystem, folderName, function (folder) {
                filePath = folder.toURL() + "\/" + fileName;
                console.log(filePath);

                that.transferFile(uri, filePath)
            }, function () {
                console.log("failed to get folder");
            });

        },
        function () {
            console.log("failed to get filesystem");
        }
        );
});


},

getFilesystem: function (success, fail) {
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail);
},
getFolder: function (fileSystem, folderName, success, fail) {
fileSystem.root.getDirectory(folderName, { create: true, exclusive: false },     success, fail)
   },

transferFile: function (uri, filePath) {
var transfer = new FileTransfer();
transfer.download(
    uri,
    filePath,
    function (entry) {
        var targetPath = entry.toURL();
    },
    function (error) {
       console.log(error)
    }
    );
},
4

1 回答 1

0

尝试使用https://www.npmjs.com/package/com-cordova-image-save-to-gallery插件下载。它将从给定的 URL 下载图片并将其保存到 IOS 照片库。

Cordova plugin add https://github.com/valwinjose007/cordova-image-save-to-gallery.git

如何使用:

declare var CordovaImageSaveToGallery: any;

CordovaImageSaveToGallery.downloadFromUrl('https://picsum.photos/200/300',(res)=>{
    //download success
},(err)=>{
    //error on download
});
于 2021-10-15T12:26:01.893 回答