djeison
djeison

Reputation: 500

Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: Too many open files

I've got this error in a method on a controller that is highly requested. It is a simple POST receiving a JSON.

This method is like this:

@PostMapping("/")
@ResponseBody
public A query(B obj){
...
}

New Relic is presenting the following stack trace:

Error message
org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: Too many open files

Sample stack trace
…ultipart.commons.CommonsMultipartResolver.parseRequest (CommonsMultipartResolver.java:168)

…part.commons.CommonsMultipartResolver.resolveMultipart (CommonsMultipartResolver.java:142)

…framework.web.servlet.DispatcherServlet.checkMultipart (DispatcherServlet.java:1099)

…ringframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:932)
...
caused by org.apache.commons.fileupload.FileUploadException: Too many open files
….apache.commons.fileupload.FileUploadBase.parseRequest (FileUploadBase.java:362)
…mons.fileupload.servlet.ServletFileUpload.parseRequest (ServletFileUpload.java:115)
…ultipart.commons.CommonsMultipartResolver.parseRequest (CommonsMultipartResolver.java:158)
…part.commons.CommonsMultipartResolver.resolveMultipart (CommonsMultipartResolver.java:142)
…framework.web.servlet.DispatcherServlet.checkMultipart (DispatcherServlet.java:1099)
…ringframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:932)
…pringframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:897)
…gframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:872)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:707)
…g.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:846)
                 javax.servlet.http.HttpServlet.service (HttpServlet.java:790)
…undertow.servlet.handlers.ServletHandler.handleRequest (ServletHandler.java:85)

Has anyone gone through something like this?

Upvotes: 1

Views: 15233

Answers (1)

edkeveked
edkeveked

Reputation: 18371

Removing the headers can work. I was facing the same issue when sending a post request from angular toward my spring controller. this was my code that was throwing the same error using angular.

let formData:FormData = new FormData();
    formData.append('file', file, file.name);
    let headers = new Headers();
    headers.append('Content-Type', 'multipart/form-data')
    headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers });
    this.http.post(URL_API_REST + 'upload', formData, options)  

Commenting out this line below solve the issue since I didn't handle the multipart/form-data in my spring controller:

headers.append('Content-Type', 'multipart/form-data')

Upvotes: 1

Related Questions