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

时间:2014-05-20 17:00:48

标签: cordova cordova-3

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

我遵循最新realease中指定的惯例 如您所见,我的目标文件是使用 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 )。

我想将图片保存在我的图片库中

1 个答案:

答案 0 :(得分:0)

我不确定如何在JavaScript中实现这一点,但我能够在Java for Android和Objective C for iOS中实现。我做了一个插件来做这个,但我不知道这是否绝对必要。我所要做的就是在使用fileTransfer:

下载之后传入图像路径

iOS(目标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 - Save image from url into device photo gallery