SpringMVC中MultipartFile上传获取图片的宽度和高度详解

作者:DT部落 时间:2023-01-30 20:43:19 

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

标签:spring,mvc,multipart
0
投稿

猜你喜欢

  • Android UI效果之绘图篇(三)

    2022-01-03 03:01:08
  • Java 反转带头结点的单链表并显示输出的实现过程

    2022-06-08 18:34:39
  • Java实现字符串匹配的示例代码

    2023-04-17 05:24:35
  • Java中单例模式的七种写法示例

    2021-07-16 07:57:22
  • android 触屏的震动响应接口调用方法

    2021-08-04 08:33:34
  • 详解Java中的泛型

    2021-12-02 14:57:34
  • SpringBoot Scheduling定时任务的示例代码

    2023-08-12 17:55:05
  • SpringMVC上传文件的两种方法

    2023-11-17 14:27:20
  • Java InheritableThreadLocal使用示例详解

    2023-04-17 20:18:12
  • WPF ComboBox获取当前选择值的实例详解

    2022-02-09 17:26:23
  • C#使用WebService结合jQuery实现无刷新翻页的方法

    2022-02-23 12:00:32
  • SpringMVC拦截器配置及运行流程解析

    2023-03-30 15:38:57
  • Java判断所给年份是平年还是闰年

    2023-10-21 17:48:59
  • 使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出详解

    2023-07-18 18:15:14
  • Java经典面试题汇总--多线程

    2023-07-13 01:17:48
  • 浅谈android Fragment横竖屏翻转对重新加载的要求

    2023-07-27 21:55:28
  • WPF自动隐藏的消息框的实例代码

    2023-09-11 09:52:36
  • 详解Android应用main函数的调用

    2021-09-30 12:01:19
  • 详解Android四种存储方式

    2022-06-26 21:51:35
  • 关于C++虚继承的内存模型问题

    2023-04-01 06:10:21
  • asp之家 软件编程 m.aspxhome.com