zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    VitrualBox无法创建64位虚拟机
    SharePoint2010安装全过程
    SharePoint 2010 集成Window Live 认证遇到的问题 part1
    sharepoint 2007 page
    解决sharepoint 2010浏览器在线浏览Word出错
    http://newoinc.wordpress.com/2010/07/09/webpartpropertypaneokcancelapplybuttonsdisplayissue/
    jquery ajax 实现从service读取数据,done
    刚好理解:TreeView设置checkbox事件__doPostBack()
    ASPAJAXExtSetup 安装说明(转)
    一个简单登陆框的变化+更新了如何连接sql数据库,获得数据集,比较两种方法(数据集和读数据)
  • 原文地址:https://www.cnblogs.com/fengguohoudejiyi/p/7632844.html
Copyright © 2011-2022 走看看