'HTTP Status 500 – Internal Server Error while uploading multipart/form-data

I am getting error when i uploading 20 MB Size of csv file in Spring MVC by using CommonsMultipartResolver library. I have done following setting in Config File :

@Bean(name = "filterMultipartResolver")
public CommonsMultipartResolver multipartResolver() throws IOException {
    logger.info("CommonsMultipartResolver Set!!");
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    multipartResolver.setMaxInMemorySize(600 * 1024 * 1024);
    multipartResolver.setMaxUploadSizePerFile(100*1024 * 1024);
    multipartResolver.setMaxUploadSize(600 * 1024 * 1024);
    return multipartResolver;
}

Controller :

@RequestMapping(value = "/FileUploadModel", method = { RequestMethod.POST, RequestMethod.GET })
public @ResponseBody String fileuploadInObjectStorage(@RequestParam(value = "jobType", required = false) String jobType,
        @RequestParam(value = "scheduleRule", required = false) String scheduleRule,
        @RequestParam(value = "automationRule", required = false) String automationRule,
        @RequestParam(value = "importDateFormat", required = true) String importDateFormat,
        @RequestParam(value = "file", required = false) MultipartFile[] multiFile1,
        @RequestParam(value = "companyName2", required = true) String company, 
        @RequestParam(value = "className2", required = true) String className,
        HttpServletRequest request,HttpSession session) throws Exception {...}

Ajax Call:

$.ajax({
                    url: contextPath+'/FileUploadModel',
                    type: "POST",
                    data: formData,
                    enctype: 'multipart/form-data',
                    processData: false,
                    contentType: false,
                    timeout:0,
                    beforeSend: function() {
                        $("#scheduleRuleDiv,#automationRuleDiv,#JSDateFormatDiv,#JSUploadfileDiv,#uploadGobtnDiv,#uploadFiles").hide();

                        $.blockUI({
                            fadeIn: 1000,
                            message:msg1
                        });

                    },

But I am not understanding what is issue. I tried to set up size and setting header also enctype="multipart/form-data", but yet not resolved.

Given below are error:

HTTP Status 500 – Internal Server Error

Type Exception Report

Message Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. java.net.SocketTimeoutException

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. java.net.SocketTimeoutException org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:165) org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142) org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:112) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) Root Cause

org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. java.net.SocketTimeoutException org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351) org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158) org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142) org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:112) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) Root Cause

org.apache.catalina.connector.ClientAbortException: java.net.SocketTimeoutException org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:322) org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:600) org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:340) org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132) java.io.FilterInputStream.read(FilterInputStream.java:133) org.apache.commons.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:134) org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:999) org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903) java.io.InputStream.read(InputStream.java:101) org.apache.commons.fileupload.util.Streams.copy(Streams.java:100) org.apache.commons.fileupload.util.Streams.copy(Streams.java:70) org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347) org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158) org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142) org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:112) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) Root Cause

java.net.SocketTimeoutException org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1290) org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1207) org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:805) org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:42) org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1172) org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:101) org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:249) org.apache.coyote.Request.doRead(Request.java:640) org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:317) org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:600) org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:340) org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132) java.io.FilterInputStream.read(FilterInputStream.java:133) org.apache.commons.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:134) org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:999) org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903) java.io.InputStream.read(InputStream.java:101) org.apache.commons.fileupload.util.Streams.copy(Streams.java:100) org.apache.commons.fileupload.util.Streams.copy(Streams.java:70) org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347) org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158) org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142) org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:112) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/9.0.50

NOTE : same code is working fine on IBM Liberty server for 99mb file.



Solution 1:[1]

you can see SocketTimeOut in tomcat's error log.

maybe increasing server's connectionTimeout resolve the error.

check this Spring boot java.net.SocketTimeoutException while uploading large files

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Roon