SpringMVC总结(三)

文件上传

MultipartResolver用于处理上传请求,将上传请求包装成可以直接获取文件的数据,从而方便操作,
MultipartResolve拥有两个实现类

  • StandardServletMultipartResolver:使用servlet3.0标准的上传方式,不用依赖第三方包
  • CommonsMultipartResolver:使用Apache的commons-fileupload完成具体上传操作,需要依赖第三包才能实现
  1. 单文件上传
    使用CommonsMultipartResolver实现单文件的上传功能
    springmvc.xml配置ConmmonsMultipartResolver类
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResovler">
	<!--设置上传文件的最大尺寸为1MB-->
	<property name="maxUploadSize" value="1048576"/>
	<!--字符编码-->
	<property name="defaultEncoding" value="UTF-8"/>
</bean>

MultipartResolver接口的实现类CommonsMultipartResolver是引用multipartResolver字符串获取该实现类对象并完成文件解析的,所以在配置CommonsMultipartResolver时必须指定该Bean的id为multipartResolver

index.jsp代码

<form action="../fileUpload" method="post" enctype="multipart/form-data">
	<input type="file" name="file">
	<input type="submit" value="上传">
</form>

success.jsp界面

文件上传成功<br>
上传文件路径:${requestScope.fileUrl}

controller层代码

@Controller
public class FileUploadController{
   
	@RequestMapping(value="/fileupload")
	public String fileUpload(@RequestParam(value="file",required="false") MultipartFile file,HttpServletRequest request,ModelMap model){
   
		//服务器端upload文件夹物理路径
		String path=request.getSession().getServletContext().getRealPath("upload");
		//获取文件名
		String fileName=file.getOriginalFilename();
		//实例化一个File对象,表示目标文件(含物理路径)
		File targetFile = new File(path,fileName);
		if(!targetFile.exists()){
   
			targetFile.mkdirs();
		}
		try{
   
			//将上传文件保存到服务器上指定位置
			file.transferto(targetFile)
		}catch(Exception e){
   
			e.printStackTrace();
		}
		model.put("fileUrl",request.getContextPath()+"/upload/"+fileName);
		return "success";
	}
}

在FileUpload方法参数中,@RequestParam注解用于在控制FileUploadController中绑定请求参数到方法参数。请求参数为file,将index.jsp页面文件上传表单中名为file的value指赋给MultiparFile类型的file属性;required=false表示使用@RequestParam注解可以不传file参数,如果required=true时则必须传递该参数,required默认参数是true
SpringMVC会将上传的文件绑定到MultipartFile对象中,MultipartFile提供了获取上传文件内容,文件名等方法,通过transferTo方法可将文件存储到硬件中

  1. 多文件上传
    将方法参数中的参数MultipartFile设置为数组形式
@RequestMapping(value="/fileUpload")
public String fileUpload(@RequestParam("file")MultipartFile[] files,HttpServletRequest request,ModelMap model){
   
	//利用数组的方式来处理多个文件
}

用HTML5的方式实现多文件上传

<%@ page language="java" contentType="text/html;charset=UTF-8";pageEncoding="UTF-8">
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值