Spring MVC: org.springframework.web.multipart.MultipartException: Could not parse multipart servlet
2015-11-23 11:00
567 查看
错误信息:
nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided] with root causejava.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided
错误原因:
spring mvc文件上传可以有两种方式,一种是common-upload,一种是servlet-api 3.0的文件上传,我选择的是servlet 3.0的文件上传。因此在mvc-dispatcher-servlet.xml中需要配置支持servlet 3.0文件处理的resovler
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> </bean>
本以为spring mvc会处理好servlet 3.0文件上传的配置,就只配置了resolver,结果就出现了现在的这个exception。
解决办法:
servlet 3.0 api中规定了两种方式配置上传文件的servlet:1. 在servlet类的java代码中添加@MultipartConfig
@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024, maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
2.如果没有在上传文件的servlet中添加,则需要在web.xml里配置的servlet里,而spring mvc中就是DispatcherServlet里添加multipart-config片段。
<multipart-config> <location>/tmp</location> <max-file-size>20848820</max-file-size> <max-request-size>418018841</max-request-size> <file-size-threshold>1048576</file-size-threshold> </multipart-config>
multipart-config所有的属性都是可选的,具体属性如下:
fileSizeThreshold: int 当数据量大于该值时,内容将被写入文件,默认值为0bytes
location: String 存放生成的文件地址,默认值为“”,文件地址是文件系统里的据对路径,它不支持相对路径,所以一般不要配置它
maxFileSize: long 允许上传的文件最大值。默认值为 -1,表示没有限制。
maxRequestSize: long 针对该 multipart/form-data 请求的最大数量,默认值为 -1,表示没有限制。
1.location属性,既是保存路径(在写入的时候,可以忽略路径设定),又是上传过程中临时文件的保存路径,一旦执行write方法之后,临时文件将被自动清除。
2.上传过程中无论是单个文件超过maxFileSize值,或者上传总的数据量大于maxRequestSize值都会抛出IllegalStateException异常
3.这里所有有关size的属性,单位都是byte
相关文章推荐
- java 锁讲解
- 关于Spring中的<context:annotation-config/>配置
- Java File 类的文件名和路径相关函数
- spring 配置文件的相互引用问题
- JAVA 相关技术文章链接
- Spring4 快速入门
- 01 Struts2 入门实例
- spring 注解模式 详解 .
- Java Socket 通信
- Failed to load JavaHL Library解决方法
- JAVA LinkedList和ArrayList的使用及性能分析
- Java内部类总结
- 默然日记20151123
- 统计文本有多少行的java代码
- JAVA编程相关:eclipse如何导入已有工程
- 时间格式化 java js mysql
- JAVA wait(), notify(),sleep详解
- java字符串与16进制2进制互转
- Caused by: java.lang.IllegalArgumentException: Can't use FLAG_RECEIVER_BOOT_UPGRADE here的解决
- 使用JavaMail接收邮件的示例