java.lang.IllegalStateException
2017-02-07 16:33
274 查看
在这篇博客中文件上传发现文件大小根据不能进行手动限制始终是1m.只要一上传大于1m的图片就会报错:
{"error_response":{"code":0,"msg":"Unknown error","sub_code":"0","sub_msg":"org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException:
java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field fileName exceeds its maximum permitted size of 10248576 bytes.
后来根据源码之后发现1m这个参数是spring自动装配的默认值:
检查我自己的代码,终于发现的问题,我没有设置
直接加上一个@bean就可以了,另外为了把文件大小做成可配置的,做了以下优化:
/**
* <p>ClassName: UploadBean
* <p>Description: w文件上传配置项
* <p>Author maqp
* <p>Version V1.0
* <p>Date 2017/1/22
*/
@Component
public class UploadBean {
@Value("${uploadSize.maxFileSize}")
String size;
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory=new MultipartConfigFactory();
factory.setMaxRequestSize(size);
factory.setMaxFileSize(size);
return factory.createMultipartConfig();
}
}
{"error_response":{"code":0,"msg":"Unknown error","sub_code":"0","sub_msg":"org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException:
java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field fileName exceeds its maximum permitted size of 10248576 bytes.
后来根据源码之后发现1m这个参数是spring自动装配的默认值:
检查我自己的代码,终于发现的问题,我没有设置
MultipartConfigElement的类型bean
直接加上一个@bean就可以了,另外为了把文件大小做成可配置的,做了以下优化:
/**
* <p>ClassName: UploadBean
* <p>Description: w文件上传配置项
* <p>Author maqp
* <p>Version V1.0
* <p>Date 2017/1/22
*/
@Component
public class UploadBean {
@Value("${uploadSize.maxFileSize}")
String size;
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory=new MultipartConfigFactory();
factory.setMaxRequestSize(size);
factory.setMaxFileSize(size);
return factory.createMultipartConfig();
}
}
相关文章推荐
- java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resol
- java_lang_IllegalStateException getOutputStream() has already been called for this response
- 严重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutputStream() has already been called
- 报java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect...
- java.lang.IllegalStateException: Content has been
- java.lang.IllegalStateException: cannot resize buffer, 305 bytes have been written (Servlet 2.3, sec. 5.1)
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
- java.lang.IllegalStateException: Post too large异常及其解决办法
- java.lang.IllegalStateException: Cannot forward after response has been committed
- java.lang.IllegalStateException: getWriter() has already been called for this response
- hibernate java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode
- java.lang.IllegalStateException: getOutputStream() has already been call
- java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
- java.lang.IllegalStateException: getOutputStream() has already been call
- java.lang.IllegalStateException: getOutputStream() has already been called for this response的解决办法
- java.lang.IllegalStateException: getWriter() has already been called for this response
- java.lang.IllegalStateException 解决办法
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the A
- java.lang.IllegalStateException: getOutputStream() has already been called for this response