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”。
这也可以作为图片判定的一种方式。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。