如何在设备图片库中保存下载的图像



我正在使用文件传输插件(org.apache.cordova.file-transfer) v.4.3从我的后端api下载图像。

我遵循最新版本中指定的约定。
正如您所看到的,我的目标文件是使用cdvfile构建的。

我正在使用这个代码:

function fileDownload(serverURL, token, imageName) {
    var deferred = $q.defer();
    var ft = new FileTransfer()
    var fileURL = "cdvfile://localhost/persistent/MyFolder/" + imageName;
    ft.download(encodeURI(serverURL), fileURL,
        function (result) {
            deferred.resolve(result);
        },
        function (reason) {
            deferred.reject(reason);
        },
        false,
        {
            headers: { 'Authorization': 'Bearer ' + token }
        });
    return (deferred.promise);
};

和一切工作正常,我的文件现在保存在一个自定义的应用程序文件夹(MyFolder)。

我想把图片保存到我的图片库

我不确定如何在JavaScript中做到这一点,但我能够在Android的Java和iOS的Objective C中做到这一点。我做了一个插件来做到这一点,但我不知道这是绝对必要的。我所要做的就是在下载后使用fileTransfer传入图像路径:

iOS (Objective C):
self.callbackId = command.callbackId;
//background thread for performance
[self.commandDelegate runInBackground:^{
    NSString* escapedUrl = [[[command arguments] objectAtIndex:0] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *imageURL = [NSURL URLWithString: escapedUrl];
    //background thread for performance
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:imageURL];
    }completionHandler:^(BOOL success, NSError *error) {
        if (success){
            NSLog(@"Image Saved!");
        } else {
            NSLog(@"Error: %@", error);
        }
    }];
}];
Android (Java):

final String path = data.getString(0);
final Activity ctx = this.cordova.getActivity();
try {
    MediaStore.Images.Media.insertImage(ctx.getContentResolver(), path, "" , "");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

很抱歉晚了2年才回答你的问题。希望这将最终帮助一些人。我为此挣扎了很长时间,希望有人在我第一次遇到它时回答你的问题

如果最初下载上面图片的方法对任何人都没有作用,这个链接为我创造了奇迹:Phonegap -将图片从url保存到设备图片库

相关内容

  • 没有找到相关文章

最新更新