我正在使用文件传输插件(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 )。
我想将图片保存在我的图片库中。
答案 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