错误信息: Corrupt form data: premature ending
最近要实现文件上传功能,需要使用O’Reilly公司的cos上传组件,但是这个组件太过久远,最近更新是08年,早期的spring版本支持,现在已经不支持了,好在它是开源的,我根据spring早期版本里的源码自己实现了。但是出现了错误:Corrupt form data: premature ending,网上找到很多都是struts上的错误,原因是request被过滤了,cos只能接受HttpServletRequest,但在spring-boot中也有这个问题,spring-boot虽然节省了我们很多的配置工作,但也无形中为我们做了很多可能我们不需要的配置。
声明MultipartResolver
spring默认支持两种上传方式,一个是基于Servlet3.0的StandardServletMultipartResolver,一个是基于commons的CommonsMultipartResolver。在spring-boot中,会默认帮我们声明StandardServletMultipartResolver,要想更改成commons,需要在spring-boot中包含主函数的类中修改成如下代码:
使用MultipartResolver
若表单的提交方式为multipart/form-data,spring会将request根据声明的mutipartResolver转换为对应的MultipartHttpServletRequest,我们也可以在代码中这样做:
如此,我们就能使用mRequest得到上传文件:
得到的类型为MultipartFile,里面封装了File的各种信息。
3. 最后
综上,作为spring的新项目,spring-boot还是很人性化的,只是我现在还没研究透它,它确实为项目开发提供了更加快速简洁的方法。
-END-