准备:品牌、供应商管理
文件上传
后台
- springmvc文件上传核心——MultipartFile接口
controller接收参数名要和jsp中控件封装的名字一致:
saveOrUpdate(Product product, MultipartFile pic)
ServletContext接口在ApplicationContext中,service可自动注入
先判断图片非空
新增操作://获取upload文件夹在磁盘上的绝对路径
String realPath = ctx.getRealPath("/upload");
//工具类上传
String imagePath = UploadUtil.upload(pic, realPath);
//保存文件路径
product.setImagePath(imagePath);
然后保存
更新操作:
//用户上传了图片,而且之前已有图片
if(pic!=null&&product.getImagePath()!=null){
//删除之前的旧图片
UploadUtil.deleteFile(ctx,product.getImagePath());
//保存新图片
String realPath = ctx.getRealPath("/upload");
String imagePath = UploadUtil.upload(pic, realPath);
product.setImagePath(imagePath);
}
然后更新
serviceImpl中依赖brandMapper,保存更新前,根据品牌编号查询出品牌名称设置给商品。
工具类UploadUtil:把文件保存到磁盘,路径保存到数据库
```
工具类中引用Thumbnails压缩图片
```
- mvc中必须配置CommonsMultipartResolver文件上传解析器,不能改默认名字multipartResolver,在bean属性中设置上传参数
前台
- 提交方式必须为post,编码方式multipart/form-data
- 表单中上传控件
商品图片显示
在pic的input中增加img标签,src为${product.imgPath}
点击查看原图插件fancyBox
fancyapps-fancyBox-18d1712/source/jquery.fancybox.js
<link href="/js/jquery/plugins/fancyapps-fancyBox-18d1712/source/jquery.fancybox.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
$(function () {
$('.fancybox').fancybox();
});
</script>
删除时要删除图片
- UploadUtil.deleteFile(ctx, imagePath);