I am working on uploading a picture to a server. I am able to successfully upload an image using iOS but when i try on android I get the error code 3. Currently using phoneg
This could also be a reason, and solved it for me:
iOS 9 and OSX 10.11 require TLSv1.2 SSL for all hosts you plan to request data from unless you specify exception domains in your app's Info.plist file.
(CFNetwork SSLHandshake failed iOS 9)
The issue probably is not in Phonegap. if the server is a Windows based server, try using another server. Also, don´t forget to add these lines:
var options = new FileUploadOptions();
options.chunkedMode = false;
options.headers = {
Connection: "close"
};
add code:
var op;
op = new FileUploadOptions();
op.headers = {
Connection: "close"
};
After adding this - code started to work well with no errors. A bit more detailed description: http://grandiz.com/phonegap-development/phonegap-file-transfer-error-code-3-solved Hope that helps!
This is an unfixed bug in the phonegap library, since there were no bug fixes, i had to get it work by my work around (Basically reupload on every alternate failure):
ft.upload(path,
encodeURI("http://yourdomain.com/upload.php"),
function(result) {
alert("Uploaded");
},
function(error) {
ft.upload(path,
encodeURI("http://yourdomain.com/upload.php"),
function(result) {
alert("Uploaded");
},
function(error) {
alert("Error uploading image");
},
{ fileName: name, fileKey: "file", mimeType: "image/jpeg", chunkedMode: false }, true);
},
{ fileName: name, fileKey: "file", mimeType: "image/jpeg", chunkedMode: false }, true);
This happened to me too. You should specify chunkedMode=false
(http://stackoverflow.com/questions/8522729/phonegap-filetransfer-upload-fails-on-android)
var options = FileUploadOptions();
options.chunkedMode = false;
These are steps I used to overcome this problem:
Added the following options:
options.chunkedMode = false;
options.headers = {
Connection: "close"
};
But more important was the fact that I was using Genymotion as the emulator for testing. Uploading the image to localhost was not working because the emulator was running in a VM and localhost meant the VM's localhost and not the localhost of your web server.
So instead of uploading to 'localhost', you should upload to:
http://10.0.2.2
and add the following line to your config.xml:
<access origin="10.0.2.2" subdomains="true"/>
I tested it and its working like a charm. Took me 3 days to get this working though.