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 图像保存到设备中?

Phonegap - 将图像从 url 保存到设备照片库中

Cordova / Javascript 将图像从 URL 复制到本地存储中

如何使用 angularjs 从 url 下载(保存)图像到我们的相册中?

Android - 在显示进度时将图像从 URL 加载到 ImageView(不保存图像)

使用 cordova 文件传输将图像/视频保存到 IOS 中的画廊