【问题标题】:Cordova - Save image from url into device photo galleryCordova - 将图像从 url 保存到设备照片库中
【发布时间】: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);
                         }
                    );
    }

【问题讨论】:

标签: cordova mobile


【解决方案1】:

图片正在保存,但需要Media Scanner 来索引图库中的图片

媒体扫描仪:

MediaScannerConnection 为应用程序提供了一种通过新 创建或下载媒体文件到媒体扫描仪服务。这 媒体扫描仪服务将从文件中读取元数据并添加 文件到媒体内容提供商。

如何使用 Apache Cordova / PhoneGap 它没有提供本地方法来刷新本地图库中的图像,我只需要寻找一个插件来完成这项工作。我找到的插件是:

cordova-mediascanner-plugin
MediaScannerPlugin

两者都有基本文档,但我使用 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

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 2017-06-10
      • 2023-03-26
      • 1970-01-01
      • 2013-12-11
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多