Saturday, 13 May 2017

Unsupported media type when uploading form data to spring server

I am trying to upload a file to a remote spring server via an API, and I keep getting an unsupported media type error (415) even though I have already made the data into form data.

Here is the express http post request:

var FormData = require('form-data');
var fs = require('fs');
var form = new FormData();

form.append('pid', params.pid);
form.append('deliveryAttachment', fs.createReadStream(params.deliveryAttachment.path));

var url = someDomain + '/proj/new/deliveryAttachment';
requestLib({
    url: url,
    method: "POST",
    jar: getJar(),
    form: form
},function (error, response, body){     
    console.log(body)
});

And here is the Java Spring controller for reference:

    @RequestMapping(value = "proj/new/deliveryAttachment", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.TEXT_PLAIN_VALUE)
public String insertDeliveryAttachment(@RequestParam("pid") long pid,
        @RequestParam("deliveryAttachment") MultipartFile file) {
    try {
        DeliveryAttachment a = new DeliveryAttachment(file.getOriginalFilename(), pid);
        ps.insertDeliveryAttachment(a, file.getBytes());
        return String.valueOf(a.id);
    } catch (IOException e) {
        return "-1";
    }
}

This is the form data console log:

enter image description here

And the 415 response:

{
  "timestamp": 1494671395688,
  "status": 415,
  "error": "Unsupported Media Type",
  "exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
  "message": "Content type 'application/x-www-form-urlencoded' not supported",
  "path": "/proj/new/deliveryAttachment"
}



via Growlithe

No comments:

Post a Comment