2012-08-02 32 views
8

Estoy trabajando para subir una imagen a un servidor. Puedo cargar una imagen con éxito con iOS pero cuando intento con Android obtengo el código de error 3. Actualmente uso phonegap cordova 1.8.1.FileTransfer.upload Phonegap() arrojando el código de error 3 en Android

ya he intentado añadir fiel a los parámetros

upload(filePath, server, successCallback, errorCallback, options, **true**); 

y añadiendo esta

options.chunkedMode = false; 

Mi archivo AndroidManifest contiene:

<uses-permission android:name="android.permission.INTERNET" /> 

Mi archivo cordova.xml contiene:

<access origin="*"/> 

¿Echo de menos algo?

Gracias

+1

Tengo el mismo código de error en iOS, ¿cómo resolvió su problema? – ADOConnection

+1

significados código de error: 1 = FileTransferError.FILE_NOT_FOUND_ERR \t \t \t \t \t \t \t \t 2 = FileTransferError.INVALID_URL_ERR \t \t \t \t \t \t \t \t 3 = FileTransferError.CONNECTION_ERR \t \t \t \t \t \t \t \t 4 = FileTransferError .ABORT_ERR \t \t \t \t \t \t \t \t 5 = FileTransferError.NOT_MODIFIED_ERR –

Respuesta

-1

Puede probar cualquiera de estos:

Set android:debuggable="true" en la etiqueta de su archivo <application>AndroidManifest.xml.

Conjunto <access origin=".*"/> lugar de sólo el * como se recomienda en la sección de comentarios de la siguiente manera:

<!-- <access origin="https://example.com" /> allow any secure requests to example.com --> 
<!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www --> 
<!-- <access origin=".*"/> Allow all domains, suggested development use only --> 
+0

. * No trabajar con la acumulación PhoneGap – ADOConnection

2

Esto sucedió a mí también. Debe especificar chunkedMode=false (http://stackoverflow.com/questions/8522729/phonegap-filetransfer-upload-fails-on-android)

var options = FileUploadOptions(); 
options.chunkedMode = false; 
+0

Lo sentimos, desactivar el modo fragmentada no ayudó. – ottel142

0

Este es un error no fijado en la biblioteca PhoneGap, ya que no había ningún correcciones de errores, que tenía que conseguir que funcione por mi trabajo en torno a (Básicamente Reupload en cada fracaso alternativo): código

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); 
+0

No resolvió mi problema, rebuscando con esto por una semana. ¿Cualquier otra sugerencia? –

0

Le he preguntado a Telerik sobre este problema que experimento con AppBuilder. De acuerdo con su respuesta it might be a bug in Cordova (estoy usando 3.2).

Recomiendan actualizar al l atest FileTransfer library (también actualizan todas las dependencias) y ver si eso resuelve su problema. De hecho, me encontré con otro problema al compilar las nuevas bibliotecas.

Recomiendo probar eso y ver si eso funciona para usted.

2

Estos son los pasos que he utilizado para superar este problema:

añadido las siguientes opciones:

options.chunkedMode = false; 
options.headers = { 
     Connection: "close" 
    }; 

Pero lo más importante fue el hecho de que yo estaba usando Genymotion como el emulador para la prueba. Cargar la imagen a localhost no funcionaba porque el emulador se estaba ejecutando en una VM y localhost significaba el host local de la VM y no el servidor local de su servidor web.

Así que en lugar de subir a 'localhost', deberá cargar en:

http://10.0.2.2 

y añadir la siguiente línea a su config.xml:

<access origin="10.0.2.2" subdomains="true"/> 

he comprobado y su trabajo como un encanto. Me tomó 3 días para que esto funcione.

+1

'Conexión:" cerrar "' el encabezado funcionó para mí. ¡GRACIAS! –

0

Esto también podría ser una razón, y resuelto por mí:

IOS 9 y OSX 10.11 requieren TLSv1.2 SSL para todos los hosts que planea solicitar datos de no ser que especifique los dominios de excepción en la información de su aplicación. archivo plist.

(CFNetwork SSLHandshake failed iOS 9)

6

La cuestión probablemente no está en Phonegap. si el servidor es un servidor basado en Windows, intente usar otro servidor. Además, no olvide agregar estas líneas:

var options = new FileUploadOptions(); 
options.chunkedMode = false; 
options.headers = { 
     Connection: "close" 
    }; 
+0

Esto funcionó para mí con un servicio web PHP en una máquina servidor de ventana. Muchas gracias – wezzy

+0

Después de probar muchas cosas, durante varias horas, esto funcionó para el servidor web Ruby (Roda) en una máquina de Windows. ¡Gracias! – globetrotter

+0

Necesitaba 'chunkedMode', pero' Connection: "close" 'header funcionó para mí. ¡Gracias! –

Cuestiones relacionadas