Search code examples
windowsvisual-studiocordovawindows-8cordova-plugin-file

Cordova file plugin can't access the application directory on windows 8


Please help, I can't seem to get an answer for this anywhere.

If I use the Cordova file plugin to try and access the application directory on Windows 8, it always fails! Here is the basic code I am using:

window.resolveLocalFileSystemURL(cordova.file.dataDirectory + 'www/assets/images/image.png', gotFile, fail);

I have been using the same basic code on the Android and iOS versions of the app for some time now with no problem so I don't understand why the Windows 8 version doesn't like it.

Through console logs I can see that the link generated is in fact correct and it's actually exactly the same as one used to append the same image to the page (which works fine): <img src="ms-appx:///www/assets/images/image.png">.

Can anyone please tell me why I can't use cordova.file.applicationDirectory with Windows? I know that folder is read only, I am just trying to read from it.

Note: I can use window.resolveLocalFileSystemURL with the cordova.file.applicationDirectory no problem at all, it works as expected. Its only the cordova.file.dataDirectory that always fails for me. The closest answer I could find was some people having trouble with the image paths of images saved from the camera plugin but that seems to have been a bug that was fixed by Cordova. If this is not a bug also then I'm assuming there is something really simple I can do to make the resolveLocalFileSystemURL work?

Thanks.


Solution

  • I found a solution to my problem by using 'windows.storage.storagefile', I had success with the following code:

    Windows.Storage.StorageFile.getFileFromApplicationUriAsync(new Windows.Foundation.Uri('ms-appx:///www/test.html')).done(win, fail); 
    

    More info can be found here: msdn.microsoft.com/library/windows/apps/… I hope this helps some other people struggling with Windows 8 as I spent quite a time scratching my head about it and trying lots of different ways. Cheers, Stuart