使用SpringMVC+Spring

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

直接上代码了

1.校验图片大小

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

 /**
* 验证图片大小
*/
private Map<String,Object> validate(MultipartFile image) {
Map<String,Object> jsonMap = new HashMap<String,Object>();
//360*240 30k (长*宽 最大值)
if (!image.isEmpty()) {
try {
BufferedImage bi = ImageIO.read(image.getInputStream());
String standard = Constant.THUMBNAIL_SIZE; //Constant.THUMBNAIL_SIZE=360,240,30
String[] stand = standard.split(",");
if (bi.getWidth() > new Integer(stand[0])) {
jsonMap.put(Constant.ERROR_MSG,"缩略图宽度不能大于"+ stand[0] + "px");
}
if (bi.getHeight() > new Integer(stand[1])) {
jsonMap.put(Constant.ERROR_MSG,"缩略图高度不能大于"+ stand[1] + "px");
}
if (image.getSize() / 1024 > new Integer(stand[2])) {
jsonMap.put(Constant.ERROR_MSG,"缩略图大小不能大于"+ stand[2] + "K");
} } catch (IOException e) {
logger.error("图片验证时出现IOException异常!");
e.printStackTrace();
}
}
return jsonMap;
}

校验图片大小的方法

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

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

 /**
* 上传图片
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping("/uploadImg.do")
@ResponseBody
public Object uploadImg(MultipartFile thumbnail,HttpSession session) throws IllegalStateException, IOException{
Map<String,Object> jsonMap = new HashMap<String,Object>(); jsonMap = validate(thumbnail); //验证图片尺寸是否符合要求 if(jsonMap.get(Constant.ERROR_MSG) == null){ //图片格式符合要求 //获取存储文件的目录
//String path = session.getServletContext().getRealPath("/upload");
String path = Constant.UPLOAD_IMG_PATH;
//文件上传
if( !thumbnail.isEmpty() ){
//上传了文件
String fileName = thumbnail.getOriginalFilename();
//上传文件的限制, 一般先用扩展名做限制。 .jpg, .png
if( fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".bmp") || fileName.endsWith(".jpeg") || fileName.endsWith(".gif")) {
//可以上传
//文件名的处理, 文件名在服务器是唯一的。 使用UUID类的方法的生成唯一值
String uuid = UUIDGenerator.getUUID(); //取出原来文件的扩展名
int pos = fileName.lastIndexOf("."); String extName = fileName.substring(pos); //组成完整的文件名称
String newFileName = uuid + extName; //把文件保存到服务器
File dest = new File(path,newFileName);
if (!dest.exists()) {
dest.mkdirs();
}
thumbnail.transferTo(dest); //文件访问路径
String urlImg = Constant.URL_PRE_IMG + newFileName;
//成功上传文件
jsonMap.put(Constant.SUCCESS, true);
jsonMap.put("thumbnail_url",urlImg); } else {
jsonMap.put(Constant.SUCCESS, false);
jsonMap.put(Constant.ERROR_MSG,"图片格式仅支持jpg|bmp|gif|jpeg|png");
logger.info("图片上传失败!!!!");
}
}
}else{
jsonMap.put(Constant.SUCCESS, false);
jsonMap.put(Constant.ERROR_MSG,"图片尺寸应该是360*240px 不能大于30K");
}
return jsonMap;
}

校验图片格式后,进行上传

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>

SpringMVC 图片上传,检查图片大小的更多相关文章

  1. 在线HTML文档编辑器使用入门之图片上传与图片管理的实现

    在线HTML文档编辑器使用入门之图片上传与图片管理的实现: 官方网址: http://kindeditor.net/demo.php 开发步骤: 1.开发中只需要导入选中的文件(通常在 webapp ...

  2. KindEditor 修改多图片上传显示限制大小和张数

    在使用KindEditor的时候用到多图片上传时,提示有最多上传20张图片,单张图片容量不超过1MB: 修改的文件的地方在:kindeditor\plugins\multiimage\multiima ...

  3. ssm使用Ajax的formData进行异步图片上传返回图片路径,并限制格式和大小

    之前整理过SSM的文件上传,这次直接用代码了. 前台页面和js //form表单 <form id= "uploadForm" enctype="multipart ...

  4. IOS 图片上传处理 图片压缩 图片处理

    - (void)initActionSheet { UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil dele ...

  5. easyui+webuploader+ckeditor实现插件式多图片上传-添加图片权限(图片上传人是谁,只能看到自己的图片)

    需求: 实现过程及思路 1.先页面布局 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=" ...

  6. 解决uploadify多图片上传部分图片丢失,且不提示任何错误的问题

    这两天用到uploadify的flash版本进行批量图片上传并生成缩略图的功能,之前用uploadify用的好好的,这次突然出现了一个奇怪的问题. 问题描述如下:当我选择单个图片上传的时候,图片上传都 ...

  7. 图片上传-本地图片转base64+ie8支持+本地预览支持

    最近项目由于flash同学没在了,图片上传只能前端重新做,后台希望用base64数据上传,复用之前接口 问题来了, 1.ie8 不支持canvas转base64 2.本地预览 base64数据,ie8 ...

  8. 推荐ajaxfilemanager for tiny_mce 比较完善的tiny_mce编辑器的图片上传及图片管理插件PHP版 支持中文

    tiny_mce编辑器,我觉得挺简洁.好用的,但就是图片上传的插件是收费的,而且网上找了半天也没有找到开源好用的上传插件. 不过功夫不负有心人,终于还就被我找到一款相当满意的插件. 这个插件的名字叫a ...

  9. django图片上传修改图片名称

    storage.py # 给上传的图片重命名 from django.core.files.storage import FileSystemStorage from django.http impo ...

  10. 图片上传,图片剪切jquery.imgareaselect

    ---恢复内容开始--- <%@ page language="java" contentType="text/html; charset=UTF-8" ...

随机推荐

  1. Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 上篇

    背景 之前在<Houdini技术体系 过程化地形系统(一):Far Cry5的植被系统分析>一文中已经对AAA游戏中过程化植被的需求有了一定的定义,后续工作就是如何用Houdini开发功能 ...

  2. apache2.4 文件浏览服务器页面配置

    footer <style> table{ border:1px solid #ccc; border-radius:6px; border-collapse:collapse; box- ...

  3. docker 搭建lnmp环境以及docker常用命令

    1.首先docker 的基本操作. 2.然后命令深入,网络映射. 3.访问docker 内的应用 端口映射网桥之类. docker pull hub.c.163.com/library/php:7.0 ...

  4. JavaCC从入门到出门

    一.JavaCC JavaCC是java的compiler compiler.JavaCC是LL解析器生成器,可处理的语法范围比较狭窄,但支持无限长的token超前扫描. 安装过程: 我是从githu ...

  5. git bash here右键菜单

    Windows Registry Editor Version 5.00 ; Open files[HKEY_CLASSES_ROOT\*\shell\gitbash]@="gitbash& ...

  6. 《Go语言网络编程》第一章:体系

    原书地址:http://tumregels.github.io/Network-Programming-with-Go 如果不知道想要构建什么,是不可能创建一个系统的.而且如果不知道它工作的环境,也同 ...

  7. ArcGIS map preview in Power BI service

    登录PowerBI网站:www.powerBI.com 点[设置],如下图:   找到[适用PowerBI的ArcGIS地图(预览)] 点击[应用]即可. 打开PowerBI DestTop客户端,找 ...

  8. 线程的条件Condiition

    条件Condition相当于给锁造钥匙,但是这钥匙是一次性的.一个线程拿到钥匙进去,出来之后钥匙没有归还,而是没了. 如下代码: from threading import Thread, Condi ...

  9. electron打包后, 使用NSIS再打包成安装包 .exe文件

    NSIS下载地址

  10. eclipse连接mysql数据库实现怎删改查操作实例(附带源码)

    package model; public class User { private int id; private String name; private String password; pub ...