Spring 文件上传
介绍
Spring的内置多部分支持处理Web应用程序中的文件上传。您可以MultipartResolver使用org.springframework.web.multipart
包中定义的可插入对象来 启用此multipart支持 。Spring提供了一个MultipartResolver 用于Commons FileUpload的实现,另一个用于Servlet 3.0 multipart请求解析。
默认情况下,Spring不执行多部分处理,因为一些开发人员要自己处理多文件。通过将多文件解析器添加到Web应用程序的上下文中,可以启用Spring多文件处理。检查每个请求以查看它是否包含多部分。如果没有找到multipart,请求按预期方式继续。如果在请求中找到multipart,MultipartResolver则使用在上下文中声明的multipart 。之后,请求中的multipart属性将像任何其他属性一样处理。
使用CommonsMultipartResolver
配置
<!--springmvc 附件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
需要引入的Jar包。
commons-fileupload.jar
。
Java 代码
@RequestMapping(value="/upload.do",method=RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam CommonsMultipartFile file){
String filename = file.getOriginalFilename();
String minetype = file.getContentType();
byte[] content = file.getBytes();
Long size = file.getSize();
}
前端代码
重点是要求Form 标签有enctype="multipart/form-data"
属性。
<!-- 上传文件 -->
<div id="fileUpload" style="display:none">
<form id ="fileUploadForm" action="<c:url value='/manage/attachment_file/upload.do'/>" enctype="multipart/form-data" method="post" >
<input id="fileContent" name="file" type="file" accept="image/*">
<input type="submit" value="提交">
</form>
</div>