SpringMvc上传头像

1、mvc配置上传解析器

<!-- 配置上传的解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设置上传文件的最大尺寸为1MB -->
	<property name="maxUploadSize">
		<!-- spring el写法:5MB -->
		<value>#{1024*1024*5}</value>
	</property>
</bean>

2、实体类添加MultipartFile这个API属性

它会自动将前台上传头像的属性封装解析到这里去

上传提交方式为post  enctype是上传的配置的,类似于解析器,必须要
method="post" enctype="multipart/form-data"


前台上传属性:
<input type="file" id="fileImg" name="fileImg">

//根据上面的那么属性里面的fileImg值,在controller层会封装、解析到实体类的这个MultipartFile 属性里面
private MultipartFile fileImg;

3、在controller接收,service层处理上传头像

public void add(Images images,HttpServletRequest req) throws IOException {
	//获取文件名   得到是这个Api处理过后的文件  org.springframework.web.multipart.commons.CommonsMultipartFile@2310a1a2
	MultipartFile fileImg = images.getFileImg();
	//拿到到upload这个文件夹的绝对路径   f:a/.../upload
	String realPath = req.getServletContext().getRealPath("/upload");
	//判断路径是否存在,如果不存在,就创建这个文件夹
	File file = new File(realPath);
	if(!file.exists()){
		file.mkdirs();
	}
	//获取到文件(原始的,上传时在计算机里面的)的名字
	String filename = fileImg.getOriginalFilename();
	//获取到上传文件的后缀名(不包含点.)
	String extension = FilenameUtils.getExtension(filename);
	/* 获取后缀名 //截取如何的符号在字符串中出现的位置
	int indexOf = filename.lastIndexOf(".");
	//截取指定开始的位置,然后得到新字符串,含开头
	String substring = filename.substring(indexOf);
	System.out.println("截取的字符:"+substring);*/
	//给上传图片一个随机名                //从第0个(下标)开始截取,截取5个。 在加上后缀
	filename=UUID.randomUUID().toString().substring(0,5)+"."+extension;
	
	//将上传的文件保存在哪个文件里面
	File saveFile = new File(realPath,filename);
	FileOutputStream output = new FileOutputStream(saveFile);
	
	//将图片转换成输入流(用于保存在指定的文件夹里面)
	InputStream input = fileImg.getInputStream();
	
	IOUtils.copy(input, output);
	
	output.close();
	input.close();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值