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>