I’m trying to accomplish a multipart file upload using feign, but I can’t seem to find a good example of it anywhere. I essentially want the HTTP request to turn out similar to this:
... Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="name" Larry --AaB03x Content-Disposition: form-data; name="file"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x--
Or even…
------fGsKo01aQ1qXn2C Content-Disposition: form-data; name="file"; filename="file.doc" Content-Type: application/octet-stream ... binary data ... ------fGsKo01aQ1qXn2C--
Do I need to manually build the request body, including generating the multipart boundaries? That seems a bit excessive considering everything else this client can do.
Advertisement
Answer
No, you don’t. You just need to define a kind of proxy interface method, specify the content-type as: multipart/form-data and other info such as parameters required by the remote API. Here is an example:
public interface FileUploadResource { @RequestLine("POST /upload") @Headers("Content-Type: multipart/form-data") Response uploadFile(@Param("name") String name, @Param("file") File file); }
The completed example can be found here: File Uploading with Open Feign