使用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. 常见机试题分析Java版

    1. 操作系统任务分为系统任务和用户任务两种.其中,系统任务的优先级<50,用户任务的优先级>=50且<=255.优先级大于255的为非法任务,应予以剔除.现有一任务队列task[] ...

  2. Javascript 变量、函数的声明

    javascript变量 全局变量和局部变量    按照变量的作用域来区分,和大多数编程语言类似,javascript变量也分为全局变量和局部变量.全局变量的作用域是整个js文件,而局部变量的作用域是 ...

  3. 离屏Canvas — 使用Web Worker提高你的Canvas运行速度

    离屏Canvas — 使用Web Worker提高你的Canvas运行速度 原文链接: developers.google.com 现在因为有了离屏Canvas,你可以不用在你的主线程中绘制图像了! ...

  4. gitlab-ci + k8s 之docker (三)

    docker 在本系列(一)中(https://www.cnblogs.com/huandada/p/9965771.html)的runner_tomcat.sh脚本有涉及到镜像的推送,本文主要记录整 ...

  5. vue分页问题参考 感谢

    https://www.cnblogs.com/zhoulifeng/p/9395295.html

  6. web端MSF搭建

    去购买一个廉价VPS  阿里X/tx学生服务器然后选择Ubuntu系统http://jingyan.baidu.com/article/2c8c281dabacad0008252aa6.html安装M ...

  7. C++ string中find() 用法

    string中 find()的用法 rfind (反向查找)  (1)size_t find (const string& str, size_t pos = 0) const;  //查找对 ...

  8. 从javaScript中学习正则表达式——RegExp

    正则表达式工具:http://regexper.com   由于国外网络可以选择 https://github.com/javallone/regexper-static 离线安装作为本地服务. 正则 ...

  9. Nginx负载均衡后端健康检查

    参考文档:https://www.cnblogs.com/kevingrace/p/6685698.html 本次使用第三方模块nginx_upstream_check_module的,要使用这个第三 ...

  10. Java中Integer和int的异同

    public void Test1() { int a = 128; Integer b = 128; Integer c = 128; //Integer会自动拆箱成int,所以为ture Syst ...