Search code examples
javascriptandroidioscordovaphonegap-plugins

Phonegap - Save image from url into device photo gallery


I'm developing phonegap application and I need to save Image from url to the Device Photo Gallery.

I can't find at the Phonegap Api a way for doing it and Also I didn't find phonegap plugin for that.

I need it to work with Iphone & Android

Thanks a lot!


Solution

  • This is file download code which can be used by anyone. You just have three parameters to use this like-

    1) URL

    2) Folder name which you want to create in your Sdcard

    3) File name (You can give any name to file)

    All types of file can download by using this code. you can use this as .js And this works on IOS also.

    //First step check parameters mismatch and checking network connection if available call    download function
    function DownloadFile(URL, Folder_Name, File_Name) {
    //Parameters mismatch check
    if (URL == null && Folder_Name == null && File_Name == null) {
        return;
    }
    else {
        //checking Internet connection availablity
        var networkState = navigator.connection.type;
        if (networkState == Connection.NONE) {
            return;
        } else {
            download(URL, Folder_Name, File_Name); //If available download function call
        }
      }
    }
    

    //Second step to get Write permission and Folder Creation

    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);
        ext = download_link.substr(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.fullPath; // Returns Fulpath of local directory
    
        fp = fp + "/" + Folder_Name + "/" + File_Name + "." + ext; // fullpath and name of the file which we want to give
        // download function call
        filetransfer(download_link, fp);
    }
    
    function onDirectorySuccess(parent) {
        // Directory created successfuly
    }
    
    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);
     }
    }
    

    //Third step for download a file into created folder

    function filetransfer(download_link, fp) {
    var fileTransfer = new FileTransfer();
    // 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
                         alert("download error source " + error.source);
                         //alert("download error target " + error.target);
                         //alert("upload error code" + error.code);
                     }
                );
    }
    

    Useful Link