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....
Simplemente coloque un ''Tipo de contenido'' en los encabezados.
encabezados: un mapa de los valores de encabezado / nombre de encabezado. Use una matriz para especificar más de un valor. En iOS, FireOS y Android, si hay un encabezado denominado Content-Type, los datos de formularios multiparte NO serán utilizados. (Objeto)
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