plugin example cordova multipartform-data file-transfer content-disposition

cordova - example - ionic file



Cordova File Transfer remove Multipart o encabezado de disposiciĆ³n de contenido (4)

Por favor agregue encabezados a las opciones

var headers={''headerParam'':''headerValue''}; options.headers = headers;

Solo remita el ejemplo de GitHub.

Logré subir una imagen a mi servidor usando el complemento Cordova File Transfer.

var img = <full path to image> var url = <url to webservice> var options = new FileUploadOptions(); //no specified options, using defaults var ft = new FileTransfer(); ft.upload(img, encodeURI(url), win, fail, options); var win = function (r) { console.log(''Successfully sent''); } var fail = function (error) { console.log("An error has occurred: Code = " + error.code); };

Sin embargo, mi servidor tuvo problemas para leer la imagen debido al encabezado adicional agregado por el complemento.

--+++++..Content-Disposition: form-data; name="file"; filename="filename.jpg"..Content-Type: image/jpeg....



Me tomó un tiempo darme cuenta de esto, pero esta es la forma en que eliminé el encabezado de varias partes. Aquí está la solución / el trabajo alrededor.

Abrir: / plataformas / android / src / org / apache / cordova / filetransfer / FileTransfer.java

Buscar:

sendStream.write(beforeDataBytes); totalBytes += beforeDataBytes.length;

Comente o elimine estas 2 líneas. Son el código que agrega el encabezado de varias partes.

Eliminar también:

sendStream.write(tailParamsBytes); totalBytes += tailParamsBytes.length;

Este código agrega una cola para el encabezado multiparte.

He realizado una verificación de suma de comprobación MD5 y ahora son lo mismo.


Basado en el código fuente:

boolean multipartFormUpload = (headers == null) || !headers.has("Content-Type"); if (multipartFormUpload) { conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); }

Puede encontrar que es fácil desactivar el encabezado multiparte al establecer una opción de encabezado ficticio en su javascript:

options.headers = {"Content-Type":"dummy"}; // set it to something to avoid the plug-in append the header