欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中的MultipartFile詳解

 更新時間:2024年01月04日 10:35:50   作者:時間不會賴著不走  
這篇文章主要介紹了Spring中的MultipartFile詳解,隨著Spring框架的崛起,使用Spring框架中的MultipartFile來處理文件也是件很方便的事了,今天就為大家?guī)砥饰鯩ultipartFile的神秘面紗,需要的朋友可以參考下

前言

在Java中處理文件向來是一種不是很方便的操作,然后隨著Spring框架的崛起,使用Spring框架中的MultipartFile來處理文件也是件很方便的事了,今天就為大家?guī)砥饰鯩ultipartFile的神秘面紗。MultipartFile本身并沒有很復(fù)雜的結(jié)構(gòu),也正是他強力封裝了很多便捷的api才引來很多人的使用。

一、概述

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注釋說明

第一句:一種可以接收使用多種請求方式來進(jìn)行上傳文件的代表形式。也就是說,如果你想用spring框架來實現(xiàn)項目中的文件上傳功能,則MultipartFile可能是最合適的選擇,而這里提到的多種請求方式則可以通俗理解為以表單的形式提交。

第二句:這個文件內(nèi)容可以存儲到內(nèi)存中或者存儲在磁盤的臨時位置上。

第三句:無論發(fā)生哪種情況,用戶都可以自由地拷貝文件內(nèi)容到session存儲中,或者以一種永久存儲的形式進(jìn)行存儲,如果有需要的話。 第四句:這種臨時性的存儲在請求結(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ā)中使用較少。文件上傳主要是用這個方法實現(xiàn)!

到此這篇關(guān)于Spring中的MultipartFile詳解的文章就介紹到這了,更多相關(guān)MultipartFile詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解java中的深拷貝和淺拷貝(clone()方法的重寫、使用序列化實現(xiàn)真正的深拷貝)

    詳解java中的深拷貝和淺拷貝(clone()方法的重寫、使用序列化實現(xiàn)真正的深拷貝)

    這篇文章主要介紹了java中的深拷貝和淺拷貝(clone()方法的重寫、使用序列化實現(xiàn)真正的深拷貝),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 實現(xiàn)了基于TCP的Java Socket編程實例代碼

    實現(xiàn)了基于TCP的Java Socket編程實例代碼

    這篇文章主要介紹了基于TCP的Java Socket編程實例代碼,有需要的朋友可以參考一下
    2013-12-12
  • Java?多線程并發(fā)LockSupport

    Java?多線程并發(fā)LockSupport

    這篇文章主要介紹了Java?多線程并發(fā)LockSupport,LockSupport?類是用于創(chuàng)建鎖和其他同步類的基本線程阻塞原語,更多相關(guān)內(nèi)容需要得小伙伴可以參考一下下面文章內(nèi)容
    2022-06-06
  • Springboot的yml配置文件用法

    Springboot的yml配置文件用法

    這篇文章主要介紹了Springboot的yml配置文件用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • RocketMQ?producer發(fā)送者淺析

    RocketMQ?producer發(fā)送者淺析

    RocketMQ生產(chǎn)者是一種高性能、可靠的消息發(fā)送者,能夠?qū)⑾⒖焖?、可靠地發(fā)送到RocketMQ消息隊列中。它具有多種消息發(fā)送模式和消息發(fā)送方式,可以根據(jù)不同的業(yè)務(wù)需求進(jìn)行靈活配置
    2023-04-04
  • springboot之Validation參數(shù)校驗詳細(xì)解讀

    springboot之Validation參數(shù)校驗詳細(xì)解讀

    這篇文章主要介紹了springboot之Validation參數(shù)校驗詳細(xì)解讀,本篇是關(guān)于springboot的參數(shù)校驗知識,當(dāng)然也適用其它java應(yīng)用,讀完本篇將學(xué)會基本的參數(shù)校驗,自定義參數(shù)校驗和分組參數(shù)校驗,需要的朋友可以參考下
    2023-10-10
  • java 迭代器模式實例詳解

    java 迭代器模式實例詳解

    這篇文章主要介紹了java 迭代器模式實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • java File類的基本使用方法總結(jié)

    java File類的基本使用方法總結(jié)

    這篇文章主要介紹了java File類的基本使用方法總結(jié),為大家分享了java實現(xiàn)上傳代碼,感興趣的小伙伴們可以參考一下
    2016-04-04
  • spring消息轉(zhuǎn)換器使用詳解

    spring消息轉(zhuǎn)換器使用詳解

    這篇文章主要為大家詳細(xì)介紹了spring消息轉(zhuǎn)換器的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java中的ArrayList集合源碼解析

    Java中的ArrayList集合源碼解析

    這篇文章主要介紹了Java中的ArrayList集合源碼解析,ArrayList是一種以數(shù)組實現(xiàn)的List,與數(shù)組相比,它具有動態(tài)擴展的能力,因此也可稱之為動態(tài)數(shù)組,需要的朋友可以參考下
    2023-12-12

最新評論