一. 图片服务器配置
在企业开发中,通常情况下,都会有一个单独的图片服务器,我这演示的是将图片和程序放到了一个tomcat中,所以首先要创建图片的虚拟目录来存储图片,有两种可以实现:
1. 通过图形化页面配置:
2.直接修改tomcat的配置:
在conf/server.xml中,添加虚拟目录
<Context docBase="G:\14-springmvc\自己学\图片\updown" path="/pic" reloadable="true"/>
如果同时配置:默认使用图形化页面配置的为准,起作用
二:加入上传图片所需的jar
三:在springmvc.xml中配置multipart类型的解析器
当在页面form中提交enctype=”multipart/form-data”的数据时,需要springmvc对multipart类型的数据进行解析
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
这的解析内部就是用的上面的jar进行图片上传的
四:页面上传图片设置
这加载图片时使用的是绝对路径,会去虚拟目录pic代表的实际物理目录下找相应的图片(这就体现了第一步配置虚拟目录的原因)
<td>
<c:if test="${itemsCustom.pic !=null}">
//使用绝对路径
<img src="/pic/${itemsCustom.pic}" width=100 height=100 />
<input type="file" name="items_pic" />
</td>
注意的两点:
- input的type为file
- form标签要添加enctype=”multipart/form-data”
五:Controller方法编写
//上传图片
if(items_pic != null && originalFilename!= null && originalFilename.length()>0){
//新上传的图片存储的物理路径,使用\\转义
String pic_path = "G:\\14-springmvc\\自己学\\图片\\updown\\";
//新的图片名称
String newFileName = UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
//新图片的存储路径
File newFile = new File(pic_path+newFileName);
//将内存中的数据写入磁盘
items_pic.transferTo(newFile);
//将新图片名称写到itemsCustom中
itemsCustom.setPic(newFileName);
}
以上大标题就是上传图片的一个完整思路或步骤