SpringMVC 图片上传,检查图片大小

使用SpringMVC+Spring

  前端提交图片文件到Controller,检查上传图片大小是否符合要求

 直接上代码了

1.校验图片大小

  这里提供出验证的方法,用于在需要校验的地方调用

 1 /**
 2      * 验证图片大小
 3      */
 4     private Map<String,Object> validate(MultipartFile image) {
 5         Map<String,Object> jsonMap = new HashMap<String,Object>();
 6         //360*240 30k (长*宽 最大值)
 7         if (!image.isEmpty()) {
 8             try {
 9                 BufferedImage bi = ImageIO.read(image.getInputStream());
10                 String standard = Constant.THUMBNAIL_SIZE;  //Constant.THUMBNAIL_SIZE=360,240,30
11                 String[] stand = standard.split(",");
12                 if (bi.getWidth() > new Integer(stand[0])) {
13                     jsonMap.put(Constant.ERROR_MSG,"缩略图宽度不能大于"+ stand[0] + "px");
14                 }
15                 if (bi.getHeight() > new Integer(stand[1])) {
16                     jsonMap.put(Constant.ERROR_MSG,"缩略图高度不能大于"+ stand[1] + "px");
17                 }
18                 if (image.getSize() / 1024 > new Integer(stand[2])) {
19                     jsonMap.put(Constant.ERROR_MSG,"缩略图大小不能大于"+ stand[2] + "K");
20                 }
21 
22             } catch (IOException e) {
23                 logger.error("图片验证时出现IOException异常!");
24                 e.printStackTrace();
25             }
26         }
27         return jsonMap;
28     }
校验图片大小的方法

 

2.校验合格后,进行将图片上传到指定位置

  这里提供Controller中用于接收请求的方法,这里方法合并在Controller里了。

 1 /**
 2      * 上传图片
 3      * @throws IOException 
 4      * @throws IllegalStateException 
 5      */
 6     @RequestMapping("/uploadImg.do")
 7     @ResponseBody
 8     public Object uploadImg(MultipartFile thumbnail,HttpSession session) throws IllegalStateException, IOException{
 9         Map<String,Object> jsonMap = new HashMap<String,Object>();
10         
11         jsonMap = validate(thumbnail); //验证图片尺寸是否符合要求
12         
13         if(jsonMap.get(Constant.ERROR_MSG) == null){ //图片格式符合要求
14             
15             //获取存储文件的目录
16             //String path = session.getServletContext().getRealPath("/upload");
17             String path = Constant.UPLOAD_IMG_PATH;
18             //文件上传 
19             if( !thumbnail.isEmpty() ){
20                 //上传了文件
21                 String fileName = thumbnail.getOriginalFilename();
22                 //上传文件的限制, 一般先用扩展名做限制。  .jpg, .png
23                 if( fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".bmp") || fileName.endsWith(".jpeg") || fileName.endsWith(".gif")) {
24                     //可以上传
25                     //文件名的处理, 文件名在服务器是唯一的。 使用UUID类的方法的生成唯一值
26                     String uuid = UUIDGenerator.getUUID(); 
27                     
28                     //取出原来文件的扩展名
29                     int pos = fileName.lastIndexOf(".");
30                     
31                     String extName = fileName.substring(pos);
32                     
33                     //组成完整的文件名称
34                     String newFileName = uuid + extName;
35                     
36                     //把文件保存到服务器
37                     File dest = new File(path,newFileName);
38                     if (!dest.exists()) {
39                         dest.mkdirs();
40                     }
41                     thumbnail.transferTo(dest);
42                     
43                     //文件访问路径
44                     String urlImg = Constant.URL_PRE_IMG + newFileName;
45                     //成功上传文件
46                     jsonMap.put(Constant.SUCCESS, true);
47                     jsonMap.put("thumbnail_url",urlImg);
48                     
49                 } else {
50                     jsonMap.put(Constant.SUCCESS, false);
51                     jsonMap.put(Constant.ERROR_MSG,"图片格式仅支持jpg|bmp|gif|jpeg|png");
52                     logger.info("图片上传失败!!!!");
53                 }
54             }
55         }else{
56             jsonMap.put(Constant.SUCCESS, false);
57             jsonMap.put(Constant.ERROR_MSG,"图片尺寸应该是360*240px 不能大于30K");
58         }
59         return jsonMap;
60     }
校验图片格式后,进行上传

 

3.依赖

  <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

转载于:https://www.cnblogs.com/fengguohoudejiyi/p/7632844.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值