Spring文件上传配置

文件上传

1.jsp页面

,将客户端文件上传到服务器,数据库是以 varachr 上传文件,取上传文件路径

<img alt="头像" style="width: 100px" src="head/${user.head_img}">

.文件无法走字符串 字节形式
表单上传 必须以enctype=”multipart/form-data”

<form action="add.do" method="post" enctype="multipart/form-data"></form>

2.SpringMVC配置文件

利用SpringMVC将用户上传的文件上传至服务器指定位置
spirngMVC进行配置 启用解析器 将表单提交的多种格式,进行解析读取
取依赖于jar包commons-fileupload-jar、commons-io-jar
重启服务器才能起作用
注意事项:id=multipartResolver 这个名字是指定的 否则出异常
乱码问题
multipartResolver 配置参数为
defaultEncoding UTF-8

<!--  配置文件解析进行配置  启用解析器  将表单提交的多种格式,进行解析读 -->
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

3.Controller获取数据/存储

调用组件进行封装
将图片保存到指定位置,将用户信息保存
图片存在磁盘,没有存储在数据库,只是存储的路径,构建目标对象
Controller使用MultipartFile接收,

@RequestMapping("add.do")
	public String  add(User user,@RequestParam("headImg") MultipartFile head_Img,
			HttpServletRequest request) throws IllegalStateException, IOException {
		//获取文件的绝对路径
		String path=request.getSession().getServletContext().getRealPath("/head");
	
		//获取上传文件的名字
		//String filename=head_Img.getOriginalFilename();
		//截取上传文件后缀名
		String type=head_Img.getOriginalFilename().substring(
				head_Img.getOriginalFilename().lastIndexOf("."));
		//未避免上传文件名重复,覆盖文件将增加区别
		String finallyfilename=System.currentTimeMillis()+type;
		String defile=path+File.separatorChar+finallyfilename;
		System.out.println(defile);
		
		File file=new File(defile);
		head_Img.transferTo(file);//将文件保存到指定位置
		//将获取到的文件名封装到对象
		user.setHead_img(finallyfilename);
		userDao.save(user);
		
		return "redirect:toList.do";
		
	}

head.transferTo(defile);将文件保存到数据库
问题,名字冲突,会覆盖原有图片
System.currentTimeMillis进行区分
分布式由不同tomcat响应,数据存储在不同服务器
应该专门一个服务器做为文件服务器进行响应
集群服务器,不然提取不到文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值