图片虚拟目录
- 虚拟目录的配置
将图片上传到固定的物理目录下,通过虚拟目录 访问物理目录 下的图片。
在tomcat上配置虚拟目录,访问虚拟目录可以访问虚拟目录对应物理目录
上边配置方式通过直接修改tomcat 下conf/server.xml文件配置虚拟目录:
配置解析器
因为springmvc是通过一个Multipart解析器实现文件上传的,所以需要配置解析器
配置完之后还需要上传的Io的jar包
加入CommonsMultipartResolver解析器依赖的jar包
CommonsMultipartResolver解析器依赖commons-fileupload和commons-io,加入如下jar包:
springmvc实现上传
在controller方法形参上添加MultipartFile类型的参数,参数名称和上传页面上file的名称一致,才可以绑定成功。
实现代码:
// 更新商品你信息
@RequestMapping(value = "/updateItems")
public String updateItems(ItemsCustom itemsCustom, MultipartFile picture)
throws Exception {
// 实现文件上传---判断文件是否存在-----getOriginalFilename获取文件名称加后缀--文件的全名称
if (picture != null && picture.getOriginalFilename() != null
&& !picture.getOriginalFilename().equals("")) {
// 获取文件的原名称
String originalFilename = picture.getOriginalFilename();
// 获取文件的后缀
String houzhuiFilename = originalFilename
.substring(originalFilename.lastIndexOf("."));
// 设置文件的新名称----为避免重复,使用uuid
String newFilename = UUID.randomUUID().toString() + houzhuiFilename;
// 创建新文件
File newFile = new File("F:\\my_workspace\\" + newFilename);
// 将文件写入磁盘
picture.transferTo(newFile);
// 更新新文件名到数据库中
itemsCustom.setPic(newFilename);
}
// 调用service更新商品---这里调用逆向工程生成的mapper
itemsMapper.updateByPrimaryKey(itemsCustom);
// 请求转发到查询商品页面
return "forward:queryItems.action";
}
注意:
实现文件上传,需要满足三个条件
1.post提交方式
2.在form中指定multipart编码格式:enctype=”multipart/form-data”
3.form中有一个文件上传的标签,且此标签中的属性name与controller中对应方法上的对应参数名称相同
注意!!!!!
如果form表单上添加enctype=”multipart/form-data”,而springmvc.xml中没有配置multipart解析器,此时其它类型参数(pojo,基本类型)都不能绑定成功。
所以,主要只要form中有enctype=”multipart/form-data”配置,必须要springmvc.xml中配置multipart解析器