首先在pom.xml导入依赖
<!--文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
编写一个前端页面(这里只完成功能,前端页面相对low)
<form action="/test/upload.do" method="post" enctype="multipart/form-data">
选择图片<input type="file" name="file">
<input type="submit" value="上传">
</form>
在Springmvc.xml文件编写文件上传配置
<!--
文件上传配置
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 文件大小 当前设置为10M -->
<property name="maxUploadSize" value="10485760"/>
<!-- 编码格式 -->
<property name="defaultEncoding" value="utf-8"/>
</bean>
在Controller中完成上传文件至服务器
/**
* 上传至服务器
*/
@RequestMapping("/upload")
public String toServerDir(HttpServletRequest req,Model model){
//从请求中获得文件对象
MultipartHttpServletRequest r = (MultipartHttpServletRequest) req;
// 获得具体文件,参数名与前端name属性一致
MultipartFile file = r.getFile("file");
// 确定服务器位置
ServletContext servletContext = req.getServletContext();
// 获得服务器/images文件路径,将来图片就存储在服务器的/images
String realPath = servletContext.getRealPath("/images");
File parent = new File(realPath);
if (!parent.exists()){
parent.mkdir();
}
System.out.println("服务器路径: parent = " + parent);
// 获得文件名
String originalFilename = file.getOriginalFilename();
// 获得文件后缀
String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
long millis = System.currentTimeMillis();
// 组装文件名
String fileName = millis+substring;
System.out.println("最终文件名: fileName = " + fileName);
File file1 = new File(parent,fileName);
// 执行上传
try {
file.transferTo(file1);
} catch (IOException e) {
System.out.println("上传");
e.printStackTrace();
}
System.out.println("上传成功");
model.addAttribute("filepath","/images/"+fileName);
return "picture";
}
这里的return "picture"; 是响应picture.jsp页面(已经在springmvc.xml中使用了视图解析器,设置了头和尾)
在picture.jsp中写如下代码进行获取
<div>
<img width="400px" height="400px" src="${filepath}">
</div>