SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解
SpringMVC一般使用MultipartFile來(lái)做文件的上傳,通過(guò)MultipartFile的getContentType()方法判定文件的類型(MIME)
“.doc”:”application/msword”
“.jpg”:”image/jpeg”
“.jpeg”:”image/jpeg”
“.png”:”image/png”
….
有時(shí)項(xiàng)目當(dāng)中,上傳圖片了,需要判定圖片的約束規(guī)格,比如寬度和高度是不是符合要求,不符合要求的展示出來(lái)也會(huì)變形,或者模糊不清晰。
我們可以通過(guò)javax.imageio.ImageIO和java.awt.image.BufferedImage來(lái)獲取到圖片的寬度和高度。代碼如下:
/** * 上傳圖片 * @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獲取的對(duì)象如果是空的話,表示上傳文件無(wú)法轉(zhuǎn)換成圖片對(duì)象,這也說(shuō)明上傳的文件不是圖片可以用作上傳文件被篡改成圖片格式的判定,如:上傳文件是123.doc,被前端篡改成123.png此時(shí)通過(guò)MultipartFile的getContentType()的方法獲取的MIME居然是:”image/png”。
這也可以作為圖片判定的一種方式。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中實(shí)體類為什么要實(shí)現(xiàn)Serializable序列化的作用
這篇文章主要介紹了Java中實(shí)體類為什么要實(shí)現(xiàn)Serializable序列化的作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11springboot+feign+Hystrix整合(親測(cè)有效)
本文主要介紹了springboot+feign+Hystrix整合,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11Java的鎖機(jī)制:synchronized和CAS詳解
這篇文章主要介紹了Java的鎖機(jī)制synchronized和CAS詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09SpringMVC實(shí)現(xiàn)文件上傳下載功能
這篇文章主要為大家詳細(xì)介紹了springMVC實(shí)現(xiàn)文件上傳和下載的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05詳談cxf和axis兩種框架下的webservice客戶端開發(fā)
這篇文章主要介紹了詳談cxf和axis兩種框架下的webservice客戶端開發(fā),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java通過(guò)Freemarker模板實(shí)現(xiàn)生成Word文件
FreeMarker是一款模板引擎: 即一種基于模板和要改變的數(shù)據(jù), 并用來(lái)生成輸出文本的通用工具。本文將根據(jù)Freemarker模板實(shí)現(xiàn)生成Word文件,需要的可以參考一下2022-09-09如何在Spring?Boot中使用MyBatis訪問(wèn)數(shù)據(jù)庫(kù)
MyBatis可以通過(guò)簡(jiǎn)單的XML或者注解來(lái)配置和映射原始類型,接口,和Java POJO為數(shù)據(jù)庫(kù)中記錄,使用MyBatis幫助我們解決各種問(wèn)題,本文介紹如何在Spring?Boot中使用MyBatis訪問(wèn)數(shù)據(jù)庫(kù),感興趣的朋友一起看看吧2023-11-11Java實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06