1、配置虚拟目录
在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:
访问http://localhost:8080/pic即可访问F:developupload emp下的图片。
也可以通过eclipse配置:
2、jar包
CommonsMultipartResolver解析器依赖commons-fileupload和commons-io,加入如下jar包:
3、在SpringMVC.xmlzho中配置解析器
5242880
4、jsp页面支持
4.1 form添加enctype="multipart/form-data":
4.2 input file属性
file的name与controller形参一致:
商品图片 |
|
5、Controller实现图片上传
// 上传图片
@RequestMapping("/updateitem")
//public String update(Integer id, String name, Float price, String detail) throws Exception{
public String update(MultipartFile pictureFile,Items items, Model model, HttpServletRequest request) throws Exception{
//1. 获取图片完整名称
String fileStr = pictureFile.getOriginalFilename();
//2. 使用随机生成的字符串+源图片扩展名组成新的图片名称,防止图片重名
String newfileName = UUID.randomUUID().toString() + fileStr.substring(fileStr.lastIndexOf("."));
//3. 将图片保存到硬盘
pictureFile.transferTo(new File("E:\Java_Eclipse\image\" + newfileName));
//4.将图片名称保存到数据库
items.setPic(newfileName);
itemService.updateItems(items);
//返回数据
//request.setAttribute("", arg1);
//指定返回的页面(如果controller方法返回值为void,则不走springMvc组件,所以要写页面的完整路径名称)
//request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
//重定向:浏览器中url发生改变,request域中的数据不可以带到重定向后的方法中
model.addAttribute("id", items.getId());
//在springMvc中凡是以redirect:字符串开头的都为重定向
return "redirect:itemEdit.action";
//请求转发:浏览器中url不发生改变,request域中的数据可以带到转发后的方法中
//model.addAttribute("id", items.getId());
//spirngMvc中请求转发:返回的字符串以forward:开头的都是请求转发,
//后面forward:itemEdit.action表示相对路径,相对路径就是相对于当前目录,当前为类上面指定的items目录.在当前目录下可以使用相对路径随意跳转到某个方法中
//后面forward:/itemEdit.action路径中以斜杠开头的为绝对路径,绝对路径从项目名后面开始算
//return "forward:/items/itemEdit.action";
}