1

Мне удалось загрузить изображение на мой сервер, используя плагин для переноса файлов Cordova.Кордоба Передача файлов удаляет многостраничный или Content-Disposition Header

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); 
}; 

Однако у моего сервера были проблемы с чтением изображения из-за дополнительного заголовка, добавленного плагином.

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

ответ

1

Принял некоторое время, чтобы понять это, но так я удалил многопользовательский заголовок. Вот решение/работа.

Open: \ платформы \ Android \ SRC \ орг \ Apache \ Cordova \ FileTransfer \ FileTransfer.java

Посмотрите на:

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

комментарий прочь или удалить эти 2 строки. Это код, который добавляет многостраничный заголовок.

Также удалите:

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

Этот код добавляет хвост для многочастного заголовка.

Я проверил контрольную сумму MD5, и они теперь совпадают.

0

Пожалуйста, добавьте заголовки опций

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

Просто отсылаем example из GitHub.

0

Просто введите «Content-Type» в заголовках.

headers: Карта заголовка/заголовка. Используйте массив, чтобы указать более одного значения. В iOS, FireOS и Android, если присутствует заголовок с именем Content-Type, данные мультифайловой формы НЕ будут использоваться. (Object)

https://github.com/apache/cordova-plugin-file-transfer#example-with-upload-headers-and-progress-events-android-and-ios-only

+0

Я не хочу, чтобы данные типа Multipart и любое значение Content-Type вообще не были. Я просмотрел код в FileTransfer.java, и у него, похоже, нет возможности полностью его отключить. Хотя и не элегантный, но простой комментарий из 4 строк делает работу без каких-либо изменений в моем веб-сервисе. –

0

на основе исходного кода:

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

Вы можете найти его легко отключить многослойный заголовок, установив опцию фиктивного заголовка в вашем JavaScript:

options.headers = {"Content-Type":"dummy"}; // set it to something to avoid the plug-in append the header 
Смежные вопросы