SpringMVC中MultipartFile上传获取图片的宽度和高度详解
作者:DT部落 发布时间:2023-01-30 20:43:19
标签:spring,mvc,multipart
SpringMVC一般使用MultipartFile来做文件的上传,通过MultipartFile的getContentType()方法判定文件的类型(MIME)
“.doc”:”application/msword”
“.jpg”:”image/jpeg”
“.jpeg”:”image/jpeg”
“.png”:”image/png”
….
有时项目当中,上传图片了,需要判定图片的约束规格,比如宽度和高度是不是符合要求,不符合要求的展示出来也会变形,或者模糊不清晰。
我们可以通过javax.imageio.ImageIO和java.awt.image.BufferedImage来获取到图片的宽度和高度。代码如下:
/**
* 上传图片
* @param file
* @return
* @throws IOException
* @throws Exception
*/
@RequestMapping(value = "/uploadImg", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
public String upload(@RequestParam(value = "file", required = true) MultipartFile file) {
System.out.println(file.getContentType());
System.out.println(file.getName());
System.out.println(file.getOriginalFilename());
try {
BufferedImage image = ImageIO.read(file.getInputStream());
if (image != null) {//如果image=null 表示上传的不是图片格式
System.out.println(image.getWidth());//获取图片宽度,单位px
System.out.println(image.getHeight());//获取图片高度,单位px
}
} catch (IOException e) {
e.printStackTrace();
}
return "hello";
}
BufferedImage image获取的对象如果是空的话,表示上传文件无法转换成图片对象,这也说明上传的文件不是图片可以用作上传文件被篡改成图片格式的判定,如:上传文件是123.doc,被前端篡改成123.png此时通过MultipartFile的getContentType()的方法获取的MIME居然是:”image/png”。
这也可以作为图片判定的一种方式。
来源:http://dtbuluo.com/134.html?utm_source=tuicool&utm_medium=referral
0
投稿
猜你喜欢
- 这个例子需要使用google的开源项目zxing的核心jar包core-3.2.0.jar可以百度搜索下载jar文件,也可使用maven添加
- 这篇文章主要介绍了如何使用mybatis-generator自动生成代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- class文件中的访问标志信息位于常量池下面的2个字节是access_flags 。 access_flags 描述的是当前类(或
- 在Android程序中很多客户端软件和浏览器软件都喜欢用Tab分页标签来搭建界面框架。读者也许会马上想到使用TabHost 与 TabAct
- 一.什么是泛型当我们不确定数据类型时,我们可以暂时使用一个字母 T代替数据类型。例如写一个方法,但是我们不知道它是传递的是什么数据类型,我们
- 动态 sql 简单来讲就是我们能通过条件的设置生成不同的 sql,MyBatis 中常用的动态 sql 表达式主要是有五种:ifchoose
- 协变协变概念令人费解,多半是取名或者翻译的锅,其实是很容易理解的。比如大街上有一只狗,我说大家快看,这有一只动物!这个非常自然,虽然动物并不
- 最近在做wifi的相关的东西,打印WifiInfo的时候 无意间发现一个参数,改参数可以查看是否连接成功了指定wifi,但是这是隐藏的,遂将
- //创建excelobject missing = System.Reflection.Missing.Value;Excel.Applic
- 此处网上最多的做法是需要修改tomcat的参数配置大致如下:<Connector port="8080" prot
- Java中有两种处理异常的方式,分别是用throws抛出异常、用try、catch捕获异常。try-catch在Javatry-catch语
- 在Spring MVC中想要对每一个URL进行权限控制,不想手工整理这样会有遗漏,所以就动手写程序了。代码如下: /** &nb
- equals函数在基类object中已经定义,源码如下 public boolean equals(Object obj) { return
- 关于idea2021最新激活教程,请点击此处,获取最新激活教程还有一种激活方法,点击此处获取吧 !下面看下IDEA 2021.2 启动报错问
- 本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下使用链表写学生成绩管理系统链表可以灵活的展示增删改查下面是结
- Collectors.toMap空指针问题在工作中遇到了一个List转Map的时候的一个NullPointException.情形很简单,问
- 本文以实例形式展示了C#判等对象是否相等的常用方法,非常实用,可供大家参考借鉴之用。具体分析如下:一、判断相等的3个方法1.实例方法publ
- 本文实例讲述了C#生成单页静态页简单实现方法。分享给大家供大家参考。具体方法如下:protected void BtGroup_Server
- Java绘图中,显示文字的方法主要有三种:(1)drawString(String str,int x,int y):在指定的位置显示字符串
- 1.创建动画控制器,双击打开动画控制器,创建 状态并添加动画片段,并且状态与状态之间进行连线,往返的都要有,在Animator的左上角–Pa