不要把图片上传到工程目录,不方便进行工程维护。
这里我配置了一个虚拟目录,通过虚拟目录,访问硬盘上存储的图片目录。
我通过Eclipse设置了一个虚拟目录,其实也可以在Tomcat的配置文件中设置。
我在E:\picture里边放了一张图片a.jpg
现在启动服务器,访问http://localhost:8080/pic/a.jpg 就会显示出这张图片。
添加jar包
- commons-fileupload-1.3.jar
- commons-io-2.0.1.jar
配置图片上传解析器
在springmv.xml中配置
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
编写jsp页面
<body>
<form action="${pageContext.request.contextPath }/test15.action" method="post" enctype="multipart/form-data">
<c:if test="${pic!=null }">
<img src="/pic/${pic}" width=100 height=100/>
<br>
</c:if>
<input type="file" name="pictureFile">
<input type="submit"/>
</form>
</body>
@RequestMapping(value = "/test15")
public String test15(Model model, MultipartFile pictureFile) throws Exception {
// 进行图片上传
if (pictureFile != null && pictureFile.getOriginalFilename() != null
&& pictureFile.getOriginalFilename().length() > 0) {
// 图片上传成功后,将图片的地址写到数据库
String filePath = "E:/picture/";
// 上传文件原始名称
String originalFilename = pictureFile.getOriginalFilename();
// 新的图片名称
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
// 新文件
String s=filePath + newFileName;
File file = new java.io.File(s);
// 将内存中的文件写入磁盘
pictureFile.transferTo(file);
model.addAttribute("pic", newFileName);
}
return "a.jsp";
}