Cordova - 将图像从 url 保存到设备照片库中
Posted
技术标签:
【中文标题】Cordova - 将图像从 url 保存到设备照片库中【英文标题】:Cordova - Save image from url into device photo gallery 【发布时间】:2015-06-19 12:13:09 【问题描述】:我正在使用 Apache Cordova 开发一个下载和保存图像的应用程序,但我无法保存和显示图库,图像转到 file:///data/data
以供我尝试运行安卓,我该怎么办?
我的代码:
function download(URL, Folder_Name, File_Name)
//step to request a file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);
function fileSystemSuccess(fileSystem)
var download_link = encodeURI(URL);
var ext = download_link.substring(download_link.lastIndexOf('.') + 1); //Get extension of URL
var directoryEntry = fileSystem.root; // to get root path of directory
directoryEntry.getDirectory(Folder_Name, create: true, exclusive: false , onDirectorySuccess, onDirectoryFail); // creating folder in sdcard
var rootdir = fileSystem.root;
var fp = rootdir.toURL(); // Returns Fulpath of local directory
console.log(rootdir);
fp = fp + "/" + Folder_Name + "/" + File_Name; // fullpath and name of the file which we want to give
// download function call
filetransfer(download_link, fp);
function onDirectorySuccess(parent)
//alert("Sucesso");
function onDirectoryFail(error)
//Error while creating directory
alert("Unable to create new directory: " + error.code);
function fileSystemFail(evt)
//Unable to access file system
alert(evt.target.error.code);
function filetransfer(download_link, fp)
var fileTransfer = new FileTransfer();
console.log(fp);
// File download function with URL and local path
fileTransfer.download(download_link, fp,
function (entry)
//alert("download complete: " + entry.fullPath);
,
function (error)
//Download abort errors or download failed errors
console.log(error);
alert(error.exception);
alert("download error source " + error.source);
//alert("download error target " + error.target);
//alert("upload error code" + error.code);
);
【问题讨论】:
Phonegap - Save image from url into device photo gallery的可能重复 【参考方案1】:图片正在保存,但需要Media Scanner 来索引图库中的图片
媒体扫描仪:
MediaScannerConnection 为应用程序提供了一种通过新 创建或下载媒体文件到媒体扫描仪服务。这 媒体扫描仪服务将从文件中读取元数据并添加 文件到媒体内容提供商。
如何使用 Apache Cordova / PhoneGap 它没有提供本地方法来刷新本地图库中的图像,我只需要寻找一个插件来完成这项工作。我找到的插件是:
cordova-mediascanner-pluginMediaScannerPlugin
两者都有基本文档,但我使用 cordova-mediascanner-plugin。
通过实现这个插件,只是修改了我的filetransfer
方法
function filetransfer(download_link, fp)
var fileTransfer = new FileTransfer();
console.log(fp);
// File download function with URL and local path
fileTransfer.download(download_link, fp,
function (entry)
//alert("download complete: " + entry.fullPath);
window.plugins.scanmedia.scanFile(fp, function (msg)
alert("Success ScanMedia");
, function (err)
alert("Fail ScanMedia: " + err);
)
,
function (error)
//Download abort errors or download failed errors
console.log(error);
alert(error.exception);
alert("download error source " + error.source);
//alert("download error target " + error.target);
//alert("upload error code" + error.code);
);
【讨论】:
【参考方案2】:请尝试在您的项目中导入此插件:-
https://github.com/devgeeks/Canvas2ImagePlugin.git
【讨论】:
以上是关于Cordova - 将图像从 url 保存到设备照片库中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cordova 应用程序将 base64 图像保存到设备中?
Cordova / Javascript 将图像从 URL 复制到本地存储中
如何使用 angularjs 从 url 下载(保存)图像到我们的相册中?