網(wǎng)站首頁 編程語言 正文
一、概述
MultipartFile為org.springframework.web.mutipart包下的一個類,也就是說如果想使用MultipartFile這個類就必須引入spring框架,換句話說,如果想在項目中使用MultipartFile這個類,那么項目必須要使用spring框架才可以,否則無法引入這個類。MultipartFile翻譯成中文來講就是“多組件(類型)的文件”,不用太在乎他的中文含義,一般來講使用MultipartFile這個類主要是來實現(xiàn)以表單的形式進行文件上傳功能。
二、對MultipartFile初步理解
1.MultipartFile一種可以接收使用多種請求方式來進行上傳文件的代表形式。(如果使用spring框架來實現(xiàn)項目中的文件上傳功能,則MultipartFile是最合適的選擇,而這里提到的多種請求方式則可以通俗理解為以表單的形式提交)。
2.這個文件內(nèi)容可以存儲到內(nèi)存中或者存儲在磁盤的臨時位置上。
3.無論發(fā)生哪種情況,用戶都可以自由地拷貝文件內(nèi)容到session存儲中,或者以一種永久存儲的形式進行存儲。
4.這種臨時性的存儲在請求結(jié)束之后將會被清除掉。
三、MultipartFile常用方法解析
1、getInputStream()方法
????首先MultipartFile是一個接口,并繼承自InputStreamSource,且在InputStreamSource接口中封裝了getInputStream方法,該方法的返回類型為InputStream類型,這也就是為什么MultipartFile文件可以轉(zhuǎn)換為輸入流。通過以下代碼即可將MultipartFile格式的文件轉(zhuǎn)換為輸入流。
2、getName方法
????getName方法獲取的是前后端約定的傳入文件的參數(shù)的名稱,在SpringBoot后臺中則是通過@Param(“uploadFile”) 注解定義的內(nèi)容。返回的name值從來不是null或者空,也就是說如果使用MultipartFile來接收文件,那么@Param(“uploadFile”)定義的接收文件的名稱則必不可少,這樣才能接收到文件,如果沒有定義@Param(“uploadFile”),則接收不到文件。
3、getOriginalFileName方法
????getOriginalFileName方法獲取的是文件的完整名稱,包括文件名稱+文件拓展名。
4、getContentType方法
????getContentType方法獲取的是文件的類型,注意是文件的類型,不是文件的拓展名。
5、isEmpty方法
????isEmpty方法用來判斷傳入的文件是否為空,如果為空則表示沒有傳入任何文件。
6、getSize方法
????getSize方法用來獲取文件的大小,單位是字節(jié)。
7、getBytes方法
????getBytes方法用來將文件轉(zhuǎn)換成一種字節(jié)數(shù)組的方式進行傳輸,會拋出IOException異常。
8、getInputStream方法
????getInputStream方法用來將文件轉(zhuǎn)換成輸入流的形式來傳輸文件,會拋出IOException異常。
9、transferTo方法
????transferTo方法用來將接收文件傳輸?shù)浇o定目標(biāo)路徑,會拋出IOException、IllegalStateException異常。該方法在實際項目開發(fā)中使用較少。
10、MultipartFile常用方法獲取數(shù)據(jù)打印結(jié)果????
????我們以上傳一張圖片文件為例,分別來看一下調(diào)用不同方法所獲取到的數(shù)據(jù),如下圖2所示:
四、MultipartFile的一些使用技巧
(1)我們在使用MultipartFile作為參數(shù)傳遞的時候,可以將MultipartFile聲明為一個數(shù)組,這樣就能支持多文件傳輸,如果只需要傳輸一個文件,則去掉數(shù)組就好了。
(2)可以根據(jù)MultipartFile的getSize方法來獲取到傳輸文件的大小,這樣就能限定傳輸過來的文件的大小了。
五、MultipartFile實操代碼展示(文件上傳oss對象存儲)
public String uploadLaboratoryData(@RequestParam("file") MultipartFile file) throws ServiceException {
//getOriginalFileName方法獲取的是文件的完整名稱,包括文件名稱+文件拓展名
String ext = FilenameUtils.getExtension(file.getOriginalFilename());
String uuid = GeneratorUtil.genFileName();
try {
//storageBizService.upload()方法是阿里云oss存儲對象方法的存儲體封裝層:上傳文化后得到文件在阿里云oss上存儲的路徑
String url = storageBizService.upload("la/" + uuid + "." + ext, file.getInputStream(), file.getSize(),
}catch (IOException | SQLException | ParseException e) {
e.printStackTrace();
}
return url;
}
原文鏈接:https://blog.csdn.net/wangjingyuing/article/details/127512284
相關(guān)推薦
- 2023-04-07 C語言中循環(huán)嵌套的應(yīng)用方式_C 語言
- 2022-04-09 Maven 編譯提示:spring-boot-maven-plugin:2.1.9.RELEASE
- 2022-04-28 shell中的curl網(wǎng)絡(luò)請求的實現(xiàn)_linux shell
- 2022-11-07 Flink?側(cè)流輸出源碼示例解析_服務(wù)器其它
- 2024-03-09 【Redis】Redis 實現(xiàn)分布式Session
- 2022-04-21 flutter實現(xiàn)一個列表下拉抽屜的示例代碼_Android
- 2022-07-10 所有文章標(biāo)題顯示為彩色,自定義指令v-rainbow
- 2022-11-17 python數(shù)學(xué)模塊(math/decimal模塊)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支