一 创建图片虚拟目录
在上传图片之前,先要设置虚拟目录(以IDEA为例)
- 打开工具栏的运行配置Edit Configurations
- 添加物理目录和并设置虚拟目录路径
创建图片虚拟
-
添加img图片在img文件夹内
在目录中放入图片 -
测试
测试
二 SpringMVC上传商品图片
1 添加依赖
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2 springmvc配置
<!--文件上传 图片大小5M-->
<bean id ="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
3 form表单配置
在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。在springmvc.xml中配置multipart类型解析器。
.......省略
<form action="${pageContext.request.contextPath}/items/editItemsSubmit.action"
method="post"
enctype="multipart/form-data">
.......省略
</form>
.......省略
4 controller层编辑
@RequestMapping(value = "/editItemsSubmit")
public String editItemsSubmit(Model model, Integer id,
@Validated(value = ValidGroup1.class) ItemsCustom itemsCustom,
BindingResult bindingResult,
MultipartFile multipartFile) throws Exception {
//异常处理
if (bindingResult.hasErrors()) {
List<ObjectError> allErrors = bindingResult.getAllErrors();
for (ObjectError objectError : allErrors) {
System.out.println(objectError.getDefaultMessage());
}
model.addAttribute("allErrors", allErrors);
model.addAttribute("itemsCustom", itemsCustom);
return "editItems";
}
//上传图片
//获取文件原始名
String originalFilename = multipartFile.getOriginalFilename();
if (multipartFile != null && originalFilename!=null && originalFilename.length()>0 ){
//存储图片物理物理路径
String pic_path = "E:\\IdeaProjects\\ssm_itemsDemo\\pic\\";
//新图片名称
String newFileName = UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
//新图片
File newFile = new File(pic_path+newFileName);
//将内存中的数据写入磁盘
multipartFile.transferTo(newFile);
//将新图片名称写到itemsCustom
itemsCustom.setPic(newFileName);
}
itemsService.updateItems(id, itemsCustom);
return "success";
}
5 页面配置
<tr>
<td>商品图片</td>
<td>
<c:if test="${itemsCustom.pic!=null}">
<img src="/pic/${itemsCustom.pic}" width="100px" height="100px"><br>
</c:if>
<input type="file" name="multipartFile"></td>
</tr>
测试
数据库
网友评论