0

If have some struggle to upload a file via REST in a SpringBoot Application. For testing the REST interface I use Insomnia or sometimes Curl. In Insomnia I have configured that I'm using a call as a POST. Further I attached a simple .txt file with a name and some content which is only "test". As a header I use Content-Type = multipart/form-data.

When I fire the REST call I get following error message inside the REST Client:

{
  "timestamp": "2019-04-04T08:51:19.743+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found",
  "path": "/upload/upload_file"
}

My RestController looks like this:

@RestController
@RequestMapping("/upload")
public class FileUploadController {

    ...

    @PostMapping("/upload_file")
    public String upload(@RequestParam("file") MultipartFile file) {
        return "test";
    }

After sending the REST call the server shows following error message:

org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:990) ~[commons-fileupload-1.3.jar:1.3]
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310) ~[commons-fileupload-1.3.jar:1.3]
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334) ~[commons-fileupload-1.3.jar:1.3]
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) ~[commons-fileupload-1.3.jar:1.3]
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1175) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1010) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
Robert
  • 23
  • 1
  • 6

2 Answers2

1

you are getting this exception because you have not specified the limit of multiform data in your application.So, you have to specify the limit.

Just add following line in your "application.properties" file or "application.yml" file.

spring.http.multipart.max-file-size=20MB

Enjoy coding..

ASK
  • 1,136
  • 1
  • 10
  • 14
0

I used a different approach instead of using MultipartFile. Now I use as a parameter of my REST interface a simple byte array. See below:

@PostMapping("/
public String upload3(@RequestBody byte[] catalogFile) {
    return "success";
}
Robert
  • 23
  • 1
  • 6