[ 
https://issues.apache.org/jira/browse/CB-9810?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonel Gayard updated CB-9810:
------------------------------
    Description: 
h2. The problem

When reading a file with {{resolveLocalFileSystemURL}} followed by 
{{FileReader.readAsText}},  the latter fails, with the error message {{Uncaught 
TypeError: Failed to execute 'readAsText' on 'FileReader': parameter 1 is not 
of type 'Blob'.}}

cordova-plugin-file provides these functions, which match the W3C APIs for File 
and File System: 
[resolveLocalFileSystemURL|http://www.w3.org/TR/2011/WD-file-system-api-20110419/#widl-LocalFileSystem-resolveLocalFileSystemURL]
 and [FileReader|http://www.w3.org/TR/FileAPI/#APIASynch].

h2. Possible causes ?

It seems the fileEntry object is created inside the Java code, as a JSONObject 
(method 
[Filesystem#makeEntryForURL|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/src/android/Filesystem.java#L61];
 therefore it does not implement the Javascript interfaces File or Blob.

h2. Possible solution ?

Looking at the source of 
[FileReader.js|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/www/FileReader.js#L130],
 it seems the FileReader implemented by the plugin delegates to the FileReader 
of the web view (at least, that's what the name of the variable suggests, 
`realReader`.

Also, the function in file FileReader.js [seems to rely on the attribute 
localURL|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/www/FileReader.js#L88]
 of the file object, which is not part of the API.

I made a quick hack on my local installation, to remove the call to the "real" 
FileReader, and use the one written in Java; this fixed the issue, and makes it 
possible to use FileReader.

Tested on Android SDK 22, on an LG Nexus, Android 5.0.1.

h2. Example

The repo at https://github.com/leonelag/proto-file-plugin has an example of an 
application trying to use the plugin to read and write files, and fails on 
Android.


  was:
h2. The problem

When reading a file with {{resolveLocalFileSystemURL}} followed by 
{{FileReader.readAsText}},  the latter fails, with the error message {{Uncaught 
TypeError: Failed to execute 'readAsText' on 'FileReader': parameter 1 is not 
of type 'Blob'.}}

cordova-plugin-file provides these functions, which match the W3C APIs for File 
and File System: 
[resolveLocalFileSystemURL|http://www.w3.org/TR/2011/WD-file-system-api-20110419/#widl-LocalFileSystem-resolveLocalFileSystemURL]
 and [FileReader|http://www.w3.org/TR/FileAPI/#APIASynch].

h2. Possible causes ?

It seems the fileEntry object is created inside the Java code, as a JSONObject 
(method 
[Filesystem#makeEntryForURL|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/src/android/Filesystem.java#L61];
 therefore it does not implement the Javascript interfaces File or Blob.

h2. Possible solution ?

Looking at the source of 
[FileReader.js|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/www/FileReader.js#L130],
 it seems the FileReader implemented by the plugin delegates to the FileReader 
of the web view (at least, that's what the name of the variable suggests, 
`realReader`.

Also, the function in file FileReader.js [seems to rely on the attribute 
localURL|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/www/FileReader.js#L88]
 of the file object, which is not part of the API.

I made a quick hack on my local installation, to remove the call to the "real" 
FileReader, and use the one written in Java; this fixed the issue, and makes it 
possible to use FileReader.

Tested on Android SDK 22, on an LG Nexus, Android 5.0.1.


> Mismatch between results of resolveLocalFileSystemURL and FileReader, throws 
> error.
> -----------------------------------------------------------------------------------
>
>                 Key: CB-9810
>                 URL: https://issues.apache.org/jira/browse/CB-9810
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin File
>    Affects Versions: 3.0.0
>         Environment: Android SDK 22
> Tested on an LG Nexus, Android 5.0.1
>            Reporter: Leonel Gayard
>
> h2. The problem
> When reading a file with {{resolveLocalFileSystemURL}} followed by 
> {{FileReader.readAsText}},  the latter fails, with the error message 
> {{Uncaught TypeError: Failed to execute 'readAsText' on 'FileReader': 
> parameter 1 is not of type 'Blob'.}}
> cordova-plugin-file provides these functions, which match the W3C APIs for 
> File and File System: 
> [resolveLocalFileSystemURL|http://www.w3.org/TR/2011/WD-file-system-api-20110419/#widl-LocalFileSystem-resolveLocalFileSystemURL]
>  and [FileReader|http://www.w3.org/TR/FileAPI/#APIASynch].
> h2. Possible causes ?
> It seems the fileEntry object is created inside the Java code, as a 
> JSONObject (method 
> [Filesystem#makeEntryForURL|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/src/android/Filesystem.java#L61];
>  therefore it does not implement the Javascript interfaces File or Blob.
> h2. Possible solution ?
> Looking at the source of 
> [FileReader.js|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/www/FileReader.js#L130],
>  it seems the FileReader implemented by the plugin delegates to the 
> FileReader of the web view (at least, that's what the name of the variable 
> suggests, `realReader`.
> Also, the function in file FileReader.js [seems to rely on the attribute 
> localURL|https://github.com/apache/cordova-plugin-file/blob/r3.0.0/www/FileReader.js#L88]
>  of the file object, which is not part of the API.
> I made a quick hack on my local installation, to remove the call to the 
> "real" FileReader, and use the one written in Java; this fixed the issue, and 
> makes it possible to use FileReader.
> Tested on Android SDK 22, on an LG Nexus, Android 5.0.1.
> h2. Example
> The repo at https://github.com/leonelag/proto-file-plugin has an example of 
> an application trying to use the plugin to read and write files, and fails on 
> Android.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to