上传图片
需求
在修改用户信息界面添加上传用户头像功能
springmvc中对多部件类型解析
在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。
在springmvc.xml中配置multipart类型解析器。
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
添加jar包
CommonsMultipartResolver
解析器依赖commons-fileupload
和commons-io
,加入如下jar
包:
创建虚拟目录,存储图片
在tomcat
上配置图片虚拟目录,在tomcat
下conf/server.xml
中添加:
<Context docBase="F:\develop\upload\temp" path="/pic" reloadable="false"/>
访问http://localhost:8080/pic
即可访问F:\develop\upload\temp
下的图片。
也可以通过eclipse
配置:
注意:在图片虚拟目录中,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期进行分级创建。
图片上传
jsp:
<form id="itemForm"
action="${pageContext.request.contextPath }/user/editUserSubmit.action"
method="post" enctype="multipart/form-data">
<table width="100%" border=1>
<tr>
<td>头像</td>
<td><img alt="" src="/pics/${user.headphoto }"> <input
type="file" name="pictureFile" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交" />
</td>
</tr>
</table>
</form>
Controller:
@RequestMapping("/editUserSubmit")
public String editUserSumit(Model model, Integer id,
@Validated(value = (ValidationGroup1.class)) UserCustom userCustom,
BindingResult bindingResult,
MultipartFile pictureFile)
throws Exception {
// 原始文件名称
String pictureFile_name=pictureFile.getOriginalFilename();
// 新文件名称
String newPictureFile_name=UUID.randomUUID()+pictureFile_name.substring(pictureFile_name.lastIndexOf('.'));
// 上传图片
File uploadPic=new File("F:\\develop\\upload\\temp\\"+newPictureFile_name);
// if(!uploadPic.exists()){
// uploadPic.mkdirs();
// }
// 向磁盘写入文件
pictureFile.transferTo(uploadPic);
// 如果上传成功,将新的文件名称写入
userCustom.setHeadphoto(newPictureFile_name);
usersService.updateUser(id, userCustom);
// 重定向
return "redirect:queryUsers.action";
}
转载请注明原文地址: https://ju.6miu.com/read-662481.html