Posted on Leave a comment

Cordova: How to download file and get download progress?

var assetURL = 'http://www.anywebsite.com/test.mp3';
var store = cordova.file.externalRootDirectory; // output in android: file:///storage/emulated/0/
// or
// var store = "cdvfile://localhost/persistent/";
var fileName = 'Sounds/test.mp3';
// NOTE: Sounds folder should already be there in order to download file in that folder

var fileTransfer = new FileTransfer();
fileTransfer.download(assetURL, store + fileName, 
        function(entry) {
            console.log("Success!");
            //appStart();
        }, 
        function(err) {
            console.log("Error");
            console.dir(err);
        });
fileTransfer.onprogress = function(result){
     var percent =  result.loaded / result.total * 100;
     percent = Math.round(percent);
     console.log('Downloaded:  ' + percent + '%');    
};

 

Posted on Leave a comment

Cordova: How to check if a file exists or not?

document.addEventListener("deviceready", init, false);

//The directory to store data
var store;

//File name of our important data file we didn't ship with the app
var fileName = "testfile.txt";

function init() {
    
   

    console.log("Checking for data file.");
    // output in android: file:///storage/emulated/0/
    store = cordova.file.externalRootDirectory;
   // or
   // store = "cdvfile://localhost/persistent/";
    //Check for the file. 
    window.resolveLocalFileSystemURL(store + fileName, onSuccess, onFail);

}

function onSuccess() {
   console.log("Great! This file exists");
}

function onFail() {
    console.log('Sorry! File not Found');
}

Above code works for both files and directories.

For Full article with extended features visit Following:
Cordova Sample: Check for a file and download if it isn’t there

Click here for Complete Documentation of cordova.file plugin

 

Posted on Leave a comment

Cordova: How to get list of all Files/Directories in a directory?

function success(entries) {
    var i;
    for (i=0; i<entries.length; i++) {
        console.log('En - ', entries[i]);
    }
}
function fail(error) {
    console.log("Failed to list directory contents: ", error);
}
// output in android: file:///storage/emulated/0/Sounds
var directory_path = cordova.file.externalRootDirectory+"Sounds";
window.resolveLocalFileSystemURL(directory_path , function(dirEntry) {
    var directoryReader = dirEntry.createReader();
    console.log(dirEntry);

    // Get a list of all the entries in the directory
    directoryReader.readEntries(success,fail);
});

Tested in Android.

Click here for more details.

Another link Mobile File Explorer with PhoneGap/Cordova has examples.

Posted on Leave a comment

Cordova: How to create directory?

/*
############
# Method 1 #
############
*/

// output in android: file:///storage/emulated/0/
var base_url = cordova.file.externalRootDirectory;
// or 
// var base_url = "cdvfile://localhost/persistent/";
var new_directory = 'TEST';

// To Create a sub Directory inside a folder
// var new_directory = 'Sounds/Test';  // Here 'Sounds' is the name of existing parent directory. Parent Directoy must exist to work fine

window.resolveLocalFileSystemURL(base_url, function (fileSystem) {
   
   dir.getDirectory(new_directory, { create: true }, function (file) {
          alert("got the file: "+ file.name + ', ' + file.fullPath);
   });
});

/*
############
# Method 2 #
############
*/

var new_directory = 'TEST';
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
 fileSystem.root.getDirectory(new_directory, { create: true }, function (file) {
 alert("got the file: "+ file.name + ', ' + file.fullPath);
 });
}, function(error) {
 alert("can't even get the file system: " + error.code);
});

For Documentation Visit: https://www.npmjs.com/package/cordova-plugin-file#android-file-system-layout

Posted on Leave a comment

How to get Base64Image from input type file?

<input  type="file" id="user_img_input" onchange="upload_user_img(this);" /> 
<img src="" id="img" />
<script>
function setBase64Image(object, img_id) {
    if ( object.files && object.files[0] ) {
        var FR = new FileReader();
        FR.onload = function(e) {

             $(img_id).attr("src", e.target.result);
        };       
        FR.readAsDataURL( object.files[0] );
    }
}

 function upload_user_img(inputObject)
  {
    setBase64Image(inputObject, '#img');
  }
</script>

Live Demo: