使用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. centos7 nginx Failed to read PID from file /run/nginx.pid: Invalid argument 解决方法

    笔者在centos7上,配置nginx代理服务后, systemctl status nginx.service 提示错误 Failed to read PID from file /run/ngin ...

  2. TIJ -- 吐司BlockingQueue

    1. 吐司BlockingQueue 考虑下面这个使用BlockingQueue的示例.有一台机器具有三个任务:一个制作吐司,一个给吐司抹黄油,另一个在抹过黄油的吐司上吐果酱.我们可以通过各个处理过程 ...

  3. axios设置application/x-www-form-urlencoded

    this.$axios({ method: 'post', url: 'http://www.17huo.com/tusou/deeplorSearch.html', headers: { 'Cont ...

  4. Rafy环境配置

    如果现在项目已经创建好啦,要使用Rafy框架进行存储,这里我简单的总结下配置的环境步骤: 一.添加引用Rafy的SDK,如下几个; 二.新建文件夹Entities 在此文件夹下创建rafy实体以及仓库 ...

  5. Excel导入工具类兼容xls和xlsx

    package com.bj58.finance.platform.operation.provider.util; import org.apache.log4j.Logger; import or ...

  6. LeetCode - 498. Diagonal Traverse

    Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ...

  7. python之刷博客访问量

    通过写刷访问量学习正则匹配 说明信息 说明:仅仅是为了熟悉正则表达式以及网页结构,并不赞成刷访问量操作. 1.刷访问量第一版 1.1 确定网页url结构,构造匹配模式串 首先是要确定刷的网页.第一版实 ...

  8. Date类型与字符串之间的转换

    Java中Date类型与字符串转化   (一)Date与字符串的转化   Date.String.Timestamp之间的转换!   public static void main(String[]  ...

  9. 已知两点的经度和纬度,计算两点间的距离(php,javascript)

    php代码:转载 http://www.cnblogs.com/caichenghui/p/5977431.html /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 ...

  10. 【微信小程序——开发步骤1】

    知识点:   view,image,text编写文本框架 使用弹性盒子动态布局 使用rpx调试分辨率 在wxml中查看默认样式属性 步骤: 1.以如图页面实例说明如何写出微信文本内容 先对页面写出整体 ...