Spring MVC的文件上传

Spring MVC的文件上传

文件上传功能在项目比较常用,如头像之类。一般来说,都是通过表单提交,设置method为post,enctype为multipart/form-data,此时浏览器会把文件以二进制流的形式发送给服务器。

Spring MVC的文件上传依赖于Apache Commons FileUpload组件,所以在使用上传功能时需要引入相关jar包(commons-fileupload.jar,commons-io.jar)。

1.页面uploadUI.jsp

 注意method、enctype属性,否则无法上传文件

<form id="fileForm" action="${pageContext.request.contextPath}/file/upload.do" method="post" enctype="multipart/form-data">
	<table>
		<tr>
			<td>请选择文件</td>
			<td><input type="file" name="upload"> </td>
		</tr>
		<tr>
			<td colspan="2">
				<input type="submit" value="上传">
			</td>
		</tr>
	</table>
</form>

2.FileController.java

处理上传的文件,保存到指定位置

@Controller
@RequestMapping("/file")
public class FileController {
	/**
	 * 上传文件页面
	 * */
	@RequestMapping("/uploadUI")
	public String  uploadUI() throws Exception{
		return "file/uploadUI";
	}
	
	/**
	 * 上传文件
	 * */
	@RequestMapping("/upload")
	public String  upload(Model model, HttpServletRequest request, 
			@RequestParam("upload") MultipartFile upload) throws Exception{
		String result = "error";
		String message = "文件上传失败";
		if(!upload.isEmpty()){
			//获取绝对路径
			String realpath = request.getServletContext().getRealPath("/uploads/file/");
			
			//文件名
			String filename = upload.getOriginalFilename();
			
			//上传文件
			upload.transferTo(new File(realpath, filename));
			
			message = "文件上传成功";//提示信息
			result = "success";//页面
		}
		
		//上传结果
		model.addAttribute("message", message);
		return result;
	}
}

3.配置springmvc.xml

Spring MVC默认情况下不能处理文件上传,需装配解析器MultipartResolver;常用的属性defaultEncoding、maxUploadSize

<!-- 定义文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设定编码,默认iso-8859-1 -->
	<property name="defaultEncoding" value="UTF-8"></property>
	<!-- 设定文件上传的最大值5MB,5*1024*1024 -->
	<property name="maxUploadSize" value="5242880"></property>
	<property name="maxInMemorySize" value="4096" />
</bean>

4.部署到tomcat,选择文件上传


5.注:

(1).表单注意method="post",enctype="multipart/form-data"两个属性;

(2).文件上传通过MultipartFile类接收,常用方法:

byte[] getBytes();
String getContentType();
InputStream getInputStream();
String getName();
String getOriginalFilename();
long getSize();
boolean isEmpty();
void transferTo(File file);
(3).spring mvc上传文件不能通过配置文件对文件进行过滤,如文件格式,所以可以在Controller中对文件进行判断过滤;

(4).上传多个文件和单个文件类似,类似于checkbox,input的name属性相同即可,Controller处理方法中可通过数组或集合接收。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值