您的位置:首页 > 编程语言 > Java开发

springmvc上传图片实例

2016-02-21 20:15 591 查看
springmvc上传图片
1、需求
在修改商品页面,添加上传商品图片功能

2、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>

3、加入上传图片的jar

4、创建图片虚拟目录存储图片
通过修改tomcat的配置:

在Tomcat安装目录下找到conf/server.xml文件,添加虚拟目录:
<Context docBase="F:\tomcat\uploadFile" path="/pic" reloadable="false"/>
注意:在图片虚拟目录中,一定将图片目录分级创建(提供i/o性能),一般采取日期(年月日)进行分级创建。

5、上传图片代码
页面:
<table>
<tr>
<td>商品图片</td>
<td>
<c:if test="${item.pic !=null}">
<img src="/pic/${item.pic }" width="100" height="100"/>
<br/>
</c:if>
<input type="file" name="item_pic"/>
</td>
</tr>
</table>

controller类中方法:
//在需要校验的pojo前面添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息
//注意:@validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)
//...
//获取校验错误信息
if(bindingResult.hasErrors()){
//输出错误信息
List<ObjectError> allErrors = bindingResult.getAllErrors();
for(ObjectError objectError:allErrors){
//输出错误信息
System.out.println(objectError.getDefaultMessage());
}
//将错误信息传到页面
model.addAttribute("allErrors", allErrors);
return "items/editItems";
}
//原始名称
String originalFileName = items_pic.getOriginalFilename();
//上传图片
if(items_pic!=null && originalFileName!=null && originalFileName.length()>0){
//物理路径
String pic_path = "F:\\pic\\2016";
//新的图片名称
String newFileName = UUID.randomUUID() + originalFileName.substring(originalFileName.lastIndexOf("."));
//新图片
File newFile = new File(pic_path + newFileName);
//将内存中的数据写入磁盘中
items_pic.transferTo(newFile);
//将新的图片名称写到itemsCustom中
itemsCustom.setPic(newFileName);
}
return "success";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: