1、导入依赖
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
2、前端控制器配置的是拦截所有请求,在springmvc.xml中放行静态资源:
<!--配置静态资源映射,防止静态资源被拦截 -->
<mvc:resources location="/resources/" mapping="/resources/**"/>
3、在springmvc.xml中配置文件上传解析器:
<!-- 定义文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设定默认编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设定文件上传的最大值5MB,5*1024*1024 -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
4、jsp页面配置表单属性,加上enctype=“multipart/form-data”
<form class="form-horizontal" action="addBook" id="addBookForm" method="post" enctype="multipart/form-data">
<!-- 封面图片 -->
<div class="form-group">
<label class="col-sm-2 control-label">封面图片</label>
<div class="col-sm-9">
<input type="file" name="pictureFile">
</div>
</div>
</form>
5、后台控制器
@RequestMapping(value="/addBook",method=RequestMethod.POST)
public String addBook(Book book,String[] tagIds,MultipartFile pictureFile,HttpServletRequest request) throws Exception
{
//使用UUID给图片重命名,并去掉四个“-”
String name = UUID.randomUUID().toString().replaceAll("-", "");
//获取文件的扩展名
String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
//设置图片上传路径
String url = request.getSession().getServletContext().getRealPath("/resources/image/");
//以绝对路径保存重名命后的图片
pictureFile.transferTo(new File(url+"/"+name + "." + ext));
System.out.println("上传路径:"+url+"/"+name + "." + ext);
//设置数据库保存路径
book.setImagePath("resources/image/"+name+"."+ext);
//添加书籍信息
bookService.addBook(book,tagIds);
return "redirect:/bookList";
}
6、效果截图