轉(zhuǎn)載:初步理解MultipartFile

一、概述

????MultipartFile為org.springframework.web.mutipart包下的一個類岛马,也就是說如果想使用MultipartFile這個類就必須引入spring框架棉姐,換句話說,如果想在項目中使用MultipartFile這個類啦逆,那么項目必須要使用spring框架才可以伞矩,否則無法引入這個類。MultipartFile翻譯成中文來講就是“多組件的文檔”夏志,不用太在乎他的中文含義乃坤,一般來講使用MultipartFile這個類主要是來實現(xiàn)以表單的形式進(jìn)行文件上傳功能。

二沟蔑、對MultipartFile初步理解

????要想真正理解什么是MultipartFile湿诊,我們就需要從源碼角度進(jìn)行分析和理解。接下來我將一步一步對MultipartFile進(jìn)行源碼解讀溉贿,這可以使得我們更系統(tǒng)的理解MultipartFile枫吧。

1.MultipartFile類的注釋說明

MultipartFile類的注釋說明截圖如下圖1.1所示:

圖1.1 MultipartFile注釋說明

圖中翻譯過來是:
1.MultipartFile一種可以接收使用多種請求方式來進(jìn)行上傳文件的代表形式浦旱。(如果使用spring框架來實現(xiàn)項目中的文件上傳功能宇色,則MultipartFile是最合適的選擇,而這里提到的多種請求方式則可以通俗理解為以表單的形式提交)颁湖。
2.這個文件內(nèi)容可以存儲到內(nèi)存中或者存儲在磁盤的臨時位置上宣蠕。
3.無論發(fā)生哪種情況,用戶都可以自由地拷貝文件內(nèi)容到session存儲中甥捺,或者以一種永久存儲的形式進(jìn)行存儲抢蚀。
4.這種臨時性的存儲在請求結(jié)束之后將會被清除掉。

2.MultipartFile常用方法解析

????首先MultipartFile是一個接口镰禾,并繼承自InputStreamSource皿曲,且在InputStreamSource接口中封裝了getInputStream方法唱逢,該方法的返回類型為InputStream類型,這也就是為什么MultipartFile文件可以轉(zhuǎn)換為輸入流屋休。通過以下代碼即可將MultipartFile格式的文件轉(zhuǎn)換為輸入流坞古。

multipartFile.getInputStream();

(1).getName方法

????getName方法獲取的是前后端約定的傳入文件的參數(shù)的名稱,在SpringBoot后臺中則是通過@Param("uploadFile") 注解定義的內(nèi)容劫樟。值得一提的是痪枫,我們來看一下該方法的注釋,如下圖2.1所示:

圖2.1 getName方法源碼截圖

從上圖的return中可以看出叠艳,返回的name值從來不是null或者空奶陈,也就是說如果使用MultipartFile來接收文件,那么@Param("uploadFile")定義的接收文件的名稱則必不可少附较,這樣才能接收到文件吃粒,如果沒有定義@Param("uploadFile"),則接收不到文件翅睛。

(2).getOriginalFileName方法

????getOriginalFileName方法獲取的是文件的完整名稱声搁,包括文件名稱+文件拓展名。

(3).getContentType方法

????getContentType方法獲取的是文件的類型捕发,注意是文件的類型疏旨,不是文件的拓展名据过。

(4).isEmpty方法

????isEmpty方法用來判斷傳入的文件是否為空鸳慈,如果為空則表示沒有傳入任何文件。

(5).getSize方法

????getSize方法用來獲取文件的大小痪署,單位是字節(jié)法挨。

(6).getBytes方法

????getBytes方法用來將文件轉(zhuǎn)換成一種字節(jié)數(shù)組的方式進(jìn)行傳輸谁榜,會拋出IOException異常。

(7).getInputStream方法

????getInputStream方法用來將文件轉(zhuǎn)換成輸入流的形式來傳輸文件凡纳,會拋出IOException異常窃植。

(8).transferTo方法

????transferTo方法用來將接收文件傳輸?shù)浇o定目標(biāo)路徑,會拋出IOException荐糜、IllegalStateException異常巷怜。該方法在實際項目開發(fā)中使用較少。
????我們以上傳一張圖片文件為例暴氏,分別來看一下調(diào)用不同方法所獲取到的數(shù)據(jù)延塑,如下圖2.2所示:

圖2.2 MultipartFile常用方法獲取數(shù)據(jù)打印結(jié)果

三、MultipartFile的一些使用技巧

(1)我們在使用MultipartFile作為參數(shù)傳遞的時候答渔,可以將MultipartFile聲明為一個數(shù)組关带,這樣就能支持多文件傳輸,如果只需要傳輸一個文件沼撕,則去掉數(shù)組就好了宋雏。

(2)可以根據(jù)MultipartFile的getSize方法來獲取到傳輸文件的大小芜飘,這樣就能限定傳輸過來的文件的大小了。
可以在我的github中看到MultipartFile的實戰(zhàn)代碼:https://github.com/SteafanMrZhou/springBootPractice

————————————————
版權(quán)聲明:本文為CSDN博主「Steafan_」的原創(chuàng)文章磨总,遵循CC 4.0 BY-SA版權(quán)協(xié)議燃箭,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36314960/article/details/104775557

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舍败,一起剝皮案震驚了整個濱河市招狸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邻薯,老刑警劉巖裙戏,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異厕诡,居然都是意外死亡累榜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門灵嫌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壹罚,“玉大人,你說我怎么就攤上這事寿羞〔荩” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵绪穆,是天一觀的道長辨泳。 經(jīng)常有香客問我,道長玖院,這世上最難降的妖魔是什么菠红? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮难菌,結(jié)果婚禮上试溯,老公的妹妹穿的比我還像新娘。我一直安慰自己郊酒,他們只是感情好遇绞,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猎塞,像睡著了一般试读。 火紅的嫁衣襯著肌膚如雪杠纵。 梳的紋絲不亂的頭發(fā)上荠耽,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音比藻,去河邊找鬼铝量。 笑死倘屹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的慢叨。 我是一名探鬼主播纽匙,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拍谐!你這毒婦竟也來了烛缔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤轩拨,失蹤者是張志新(化名)和其女友劉穎践瓷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亡蓉,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡晕翠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了砍濒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淋肾。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爸邢,靈堂內(nèi)的尸體忽然破棺而出樊卓,到底是詐尸還是另有隱情,我是刑警寧澤杠河,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布简识,位于F島的核電站,受9級特大地震影響感猛,放射性物質(zhì)發(fā)生泄漏七扰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一陪白、第九天 我趴在偏房一處隱蔽的房頂上張望颈走。 院中可真熱鬧,春花似錦咱士、人聲如沸立由。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锐膜。三九已至,卻和暖如春弛房,著一層夾襖步出監(jiān)牢的瞬間道盏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留荷逞,地道東北人媒咳。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像种远,于是被迫代替她去往敵國和親涩澡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容