cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Stanford (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CB-12257) xhr.send fails on sliced File object
Date Fri, 16 Dec 2016 07:59:58 GMT

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

Michael Stanford updated CB-12257:
----------------------------------
    Description: 
Versions:
Cordova: 6.4.0
Cordova File System Plugin: 4.3.1

iOS: 10.0.2
Cordova iOS: 4.3.1

Android: 6.0.1
Cordova Android: 6.0.0

Desktop OS: OS X 10.12.1
Desktop Safari: 10.0.1

AWS S3 SDK is documented at:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html

On both Android and iOS, using the Cordova File System plugin, and in OS X Safari using the
File Input HTML tag, the app successfully retrieves a File object in every case from the local
file system.

In each of the three cases, the app invokes the Amazon S3 Javascript API  upload method with
this File object. In desktop Safari the file uploads correctly and appears in the S3 bucket
correctly. 

In the Cordova apps, both iOS and Android, the file seems to upload correctly (no errors),
but the resulting (correctly named) file in the bucket contains only the 15-byte text string
"\[object Object\]".

The app uses the same HTML and JS source files in all three cases; after creating the File
object the code is identical, and because they run from the same HTML page, the meta information
is also the same.

Because the S3 API upload method supports multipart uploads, it invokes the File.slice method
on the File before passing it to xhr.send. In the desktop Safari implementation of the File
object, the slice method returns a Blob object. In the Cordova implementation (as documented
in the source code at line 47 of File.js) it returns another File object.

Tracing through to the xhr.send function in the S3 API, the desktop version delivers a Blob
as the argument to xhr.send(), and the file is uploaded correctly. The Cordova versions deliver
a File as the argument to xhr.send(), and the uploads fail.

It seems as though xhr.send understands the Blob, but not the File.


  was:
Versions:
Cordova: 6.4.0
Cordova File System Plugin: 4.3.1

iOS: 10.0.2
Cordova iOS: 4.3.1

Android: 6.0.1
Cordova Android: 6.0.0

Desktop OS: OS X 10.12.1
Desktop Safari: 10.0.1

AWS S3 SDK is documented at:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html

On both Android and iOS, using the Cordova File System plugin, and in OS X Safari using the
File Input HTML tag, I seem to be successfully retrieving a File/blob in every case - see
the listings below.

In each of the three cases, I invoke the Amazon S3 SDK upload API with this File object. In
desktop Safari the file uploads correctly and appears in the S3 bucket correctly. 

In iOS and Android, the file appears to upload correctly (no errors), but all that appears
in the bucket is the 15-byte text string "\[object Object\]".

I am using the same HTML and JS files  in all three cases; after collecting the File object
the code is identical, and because they run from the same HTML page, the meta information
is also the same.

In case it is something to do with security settings, I set all the permissions and CORS on
the S3 bucket to wide open for anybody to do anything. This may still be the root of the problem,
but the filename gets through OK, and gets written in every case, and the file contents gets
through correctly from the desktop browser. 

Tracing through to the xhr.send function in the S3 API, the file is delivered correctly when
the argument is a Blob (as delivered by the desktop version), but fails whe the argument is
a File object (as delivered by the Cordova version). It seems as though xhr.send understands
the Blob, but not the File.



> xhr.send fails on sliced File object
> ------------------------------------
>
>                 Key: CB-12257
>                 URL: https://issues.apache.org/jira/browse/CB-12257
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin File
>    Affects Versions: 4.3.1
>         Environment: Cordova iOS, Android.
>            Reporter: Michael Stanford
>
> Versions:
> Cordova: 6.4.0
> Cordova File System Plugin: 4.3.1
> iOS: 10.0.2
> Cordova iOS: 4.3.1
> Android: 6.0.1
> Cordova Android: 6.0.0
> Desktop OS: OS X 10.12.1
> Desktop Safari: 10.0.1
> AWS S3 SDK is documented at:
> http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html
> On both Android and iOS, using the Cordova File System plugin, and in OS X Safari using
the File Input HTML tag, the app successfully retrieves a File object in every case from the
local file system.
> In each of the three cases, the app invokes the Amazon S3 Javascript API  upload method
with this File object. In desktop Safari the file uploads correctly and appears in the S3
bucket correctly. 
> In the Cordova apps, both iOS and Android, the file seems to upload correctly (no errors),
but the resulting (correctly named) file in the bucket contains only the 15-byte text string
"\[object Object\]".
> The app uses the same HTML and JS source files in all three cases; after creating the
File object the code is identical, and because they run from the same HTML page, the meta
information is also the same.
> Because the S3 API upload method supports multipart uploads, it invokes the File.slice
method on the File before passing it to xhr.send. In the desktop Safari implementation of
the File object, the slice method returns a Blob object. In the Cordova implementation (as
documented in the source code at line 47 of File.js) it returns another File object.
> Tracing through to the xhr.send function in the S3 API, the desktop version delivers
a Blob as the argument to xhr.send(), and the file is uploaded correctly. The Cordova versions
deliver a File as the argument to xhr.send(), and the uploads fail.
> It seems as though xhr.send understands the Blob, but not the File.



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

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


Mime
View raw message