Search code examples
cordovamultipartform-datafile-transfercontent-disposition

Cordova File Transfer remove Multipart or Content-Disposition Header


I managed to upload an image to my server using Cordova File Transfer plugin.

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

However, my server had problems reading the image due to the extra header added by the plugin.

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

Solution

  • Took me awhile to figure this but this is the way I removed the Multipart Header. Here's the solution/work around.

    Open: \platforms\android\src\org\apache\cordova\filetransfer\FileTransfer.java

    Look for:

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

    Comment away or delete these 2 lines. They are the code that adds the multipart header.

    Also remove:

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

    This code adds a tail for the multipart header.

    I have done a MD5 checksum check and they are of the same now.