- 导入jar包
- 在springmvc中配置管理文件上传的解析器
- 在tomact中双击,add external web module…
- jsp页面写input file域,注意表单要有 enctype=“multipart/form-data”
- 在controller写具体步骤
springmvc
<!-- 创建管理文件上传的解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改商品信息</title>
</head>
<body>
<form id="itemForm" action="${pageContext.request.contextPath }/updateitems.action" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="${items.id }"/>
修改商品信息:
<table width="100%" border=1>
<tr>
<td>商品名称</td>
<td><input type="text" name="name" value="${items.name }"/></td>
</tr>
<tr>
<td>商品价格</td>
<td><input type="text" name="price" value="${items.price }"/></td>
</tr>
<tr>
<td>商品生产日期</td>
<td><input type="text" name="createtime" value="<fmt:formatDate value="${items.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/></td>
<td>
${map['time']}
</td>
</tr>
<tr>
<td>商品图片</td>
<td>
<c:if test="${items.pic !=null && items.pic != ''}">
<img src="/pic/${items.pic}" width=100 height=100/>
<br/>
</c:if>
<input type="file" name="pictureFile"/>
</td>
</tr>
<tr>
<td>商品简介</td>
<td>
<textarea rows="3" cols="30" name="detail">${items.detail }</textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"/>
</td>
</tr>
</table>
</form>
</body>
<c:if test="${errors != null }">
<c:forEach items="${errors }" var="err">
${err.defaultMessage }
</c:forEach>
</c:if>
</html>
controller
@RequestMapping("/updateitems")
public String updateitems(Model model,Integer id,@ModelAttribute(value="") @Validated(value={ItemsGroup1.class}) Items items,BindingResult bindingResult,
MultipartFile pictureFile) throws Exception{
List<ObjectError> errors = bindingResult.getAllErrors();
Map<String,String> map = new HashMap<String,String>();
if(errors != null && errors.size()!=0){
for(ObjectError error : errors){
System.out.println(error.getDefaultMessage());
if(error.getDefaultMessage().equals("生产日期不能为空")){
map.put("time",error.getDefaultMessage() );
}
}
model.addAttribute("errors", errors);
model.addAllAttributes(map);
System.out.println(map);
return "items/editItems";
}
//实现图片上传
//1.获取上传图片的原始名称
String oldname = pictureFile.getOriginalFilename();
//
if(pictureFile != null && oldname != null && oldname.length()>0){
//指定图片保存的路径
String pic_path = "D:\\WGS_upload\\temp_img\\";
//生成一个新的图片名称
//UUID.randomUUID()相当于随机数
//oldname.substring(oldname.lastIndexOf("."))截取字符串,oldname.lastIndexOf(".")最后一个点,想当于截取到后缀名
String newname = UUID.randomUUID()+oldname.substring(oldname.lastIndexOf("."));
//创建一张图片
File newFile = new File(pic_path+newname);
//执行文件上传拷贝
pictureFile.transferTo(newFile);
//给商品对象保存图片名称
items.setPic(newname);
}
itemsService.updateByPrimaryKeyWithBLOBs(id, items);
//return "sucess";
return "forward:getitems.action";
}