See: https://github.com/apache/incubator-cordova-android/blob/master/framework/src/org/apache/cordova/FileTransfer.java private void upload(final String source, final String target, JSONArray args , CallbackContext callbackContext)
Cordova Android may have a bug with the way files are being sent. The Android source code appears to use the built in java HttpURLConnection and the developer who wrote the functionality decided to write the logic to assemble the post data to be transfered. I examined two different post dumps being sent to a web server running Nginx and Varnish. Notice how the headers are different between *iOS *and *Android*. I would suggest using http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/DefaultHttpClient.html Here are the two post dumps: * Android:* POST /service/claim/photo/75?api_key=123ab c HTTP/1.1 Connection: Keep-Alive Content-Type: multipart/form-data;boundary=***** User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; Nexus S Build/JRO03E) Host: sit.service.app.mydomain.ca Accept-Encoding: gzip Transfer-Encoding: chunked o<EF><8A>P9)^B^@6^@^@^@6^@^@^@^@^@^L^G<AC><C8>^@PV<8E>^A^@E^@^@(<E1>e@ ^@@^F<DE>ESC^_[&c<88><B2>^@P<FF><BD>%&<9C><A5><AF>WĘP^P^Y <E6>^^@^@o<EF><8A>P<93>,^B^@<D9>^D^@ ^@<D9>^D^@^@^@^@^L^G<AC><C8>^@PV<8E>^A^@E^@^D<CB><E1>f@^@@^ F<DA>:<AC>ESC^_[&c<88><B2>^@P<FF><BD>%&<9C><A5><AF>WĘP^X^Y ^?I^@^@HTTP/1.1 503 Service Unavailable Server: Varnish Content-Type: text/html; charset=utf-8 Content-Length: 932 Accept-Ranges: bytes Date: Fri, 26 Oct 2012 20:15:43 GMT X-Varnish: 409357173 Age: 0 Via: 1.1 varnish Connection: close X-Cache: MISS *iOS*: POST /service/claim/photo/73?api_key=123abc HTTP/1.1 Host: sit.service.app.mydomain.ca User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Content-Length: 139038 Accept: */* Content-Type: multipart/form-data; boundary=*****org.apache. cordova.formBoundary X-Requested-With: XMLHttpRequest Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: keep-alive 4<EF><8A>P;^F^A^@6^@^@^@6^@^@^@^@^@^L^G<AC><C8>^@PV<8E>^A^@E^@^@(}1@ ^@@^FC^S<AC>ESC^_[&c<88><B2>^@P<F7><8F><A1><F9><EB><CF>^^^_<C1>P^P^Y ^X`^@^@4<EF><8A>P<F7>^K^A^@ <9A>^E^@^@<9A>^E^@^@^@PV<8E>^A:^@^U<FA>~<E0>^Z^H^@E^@^E<8C><D7>C@ ^@)^F<FA><9C>&c<88><B2><AC>ESC^_[<F7><8F>^@P^^^_<C1>< A1><F9><EB><CF>P^P<FF><FF><F9><A6>^@^@--*****org.apache.cordova.formBoundary Content-Disposition: form-data; name="description" Photo --*****org.apache.cordova.formBoundary Content-Disposition: form-data; name="userfile"; filename="cdv_photo_002.jpg" Content-Type: image/jpeg Content-Length: 138722 <http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/DefaultHttpClient.html>