Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cordova File Plugin - Read from www folder?

I'm having an issue on Android (not tested on other platforms) where I would like to use the cordova file API to read a file from the /www folder. There are conflicting pieces of information on the internet about whether this is possible or not. I've followed an example like:

window.resolveLocalFileSystemURL(cordova.file.applicationDirectory + "www/index.html", gotFile, fail);

However I'm getting error 1 (file not found). I can use AJAX to retrieve the file I need but it doesn't suit my use case. I want to query a directory in the /www folder and read a dynamically named file. Any ideas?

I'd like to have an updated answer, as the one I've seen is over 1 year old: Can you read files in the www folder using PhoneGap.'s JS methods?

Thanks in advance.

like image 705
Luke Deighton Avatar asked Oct 09 '14 15:10

Luke Deighton


2 Answers

You can use this function to get all available files in www/ folder

function listDir(path){
  window.resolveLocalFileSystemURL(path,
    function (fileSystem) {
      var reader = fileSystem.createReader();
      reader.readEntries(
        function (entries) {
          console.log(entries);
        },
        function (err) {
          console.log(err);
        }
      );
    }, function (err) {
      console.log(err);
    }
  );
}
//example: list of www/ folder in cordova/ionic app.
listDir(cordova.file.applicationDirectory + "www/");

(The www folder is in readonly mode. You can't write anything in it. Cordova plugin file documentation explain this. But you can use the copyTo() method of html5 API File to copy your data in another location)

like image 159
MrP Avatar answered Oct 12 '22 23:10

MrP


Per Raymond Camden from earlier this year, this isn't possible with the cordova=file-plugin: http://www.raymondcamden.com/2015/01/21/phonegapcordova-tip-working-with-files-under-www-and-android -

First and foremost, you cannot use the File system APIs to work with files under the www folder. The docs for the File plugin incorrectly states that you have Read access to the application directory (which would contain www) but that is incorrect.

But there are several directories that you do have access to using the file plugin. Here's some sample code to retrieve the contents of a few of them: https://stackoverflow.com/a/29905718/346550

like image 44
eb1 Avatar answered Oct 12 '22 23:10

eb1