我正在使用文件传输插件(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保存到设备图片库