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

Spring中的MultipartFile詳解

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

前言

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

一、概述

MultipartFile為org.springframework.web.mutipart包下的一個(gè)類(lèi),也就是說(shuō)如果想使用MultipartFile這個(gè)類(lèi)就必須引入spring框架,換句話說(shuō),如果想在項(xiàng)目中使用MultipartFile這個(gè)類(lèi),那么項(xiàng)目必須要使用spring框架才可以,否則無(wú)法引入這個(gè)類(lèi)。MultipartFile翻譯成中文來(lái)講就是“多組件的文檔”,不用太在乎他的中文含義,一般來(lái)講使用MultipartFile這個(gè)類(lèi)主要是來(lái)實(shí)現(xiàn)以表單的形式進(jìn)行文件上傳功能。

二、理解什么是MultipartFile

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

1、MultipartFile類(lèi)的注釋說(shuō)明

MultipartFile類(lèi)的注釋說(shuō)明截圖如下圖1.1所示:

在這里插入圖片描述

圖1.1 MultipartFile注釋說(shuō)明

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

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

第三句:無(wú)論發(fā)生哪種情況,用戶都可以自由地拷貝文件內(nèi)容到session存儲(chǔ)中,或者以一種永久存儲(chǔ)的形式進(jìn)行存儲(chǔ),如果有需要的話。 第四句:這種臨時(shí)性的存儲(chǔ)在請(qǐng)求結(jié)束之后將會(huì)被清除掉。

2、MultipartFile常用方法解析

首先MultipartFile是一個(gè)接口,并繼承自InputStreamSource,且在InputStreamSource接口中封裝了getInputStream方法,該方法的返回類(lèi)型為InputStream類(lèi)型,這也就是為什么MultipartFile文件可以轉(zhuǎn)換為輸入流。通過(guò)以下代碼即可將MultipartFile格式的文件轉(zhuǎn)換為輸入流。

multipartFile.getInputStream();

(1)、getName方法

getName方法獲取的是前后端約定的傳入文件的參數(shù)的名稱(chēng),在SpringBoot后臺(tái)中則是通過(guò)@Param(“uploadFile”) 注解定義的內(nèi)容。值得一提的是,我們來(lái)看一下該方法的注釋?zhuān)缦聢D2.1所示:

在這里插入圖片描述

圖2.1 getName方法源碼截圖

從上圖的return中可以看出,返回的name值從來(lái)不是null或者空,也就是說(shuō)如果使用MultipartFile來(lái)接收文件,那么@Param(“uploadFile”)定義的接收文件的名稱(chēng)則必不可少,這樣才能接收到文件,如果沒(méi)有定義@Param(“uploadFile”),則接收不到文件。

(2)、getOriginalFileName方法

getOriginalFileName方法獲取的是文件的完整名稱(chēng),包括文件名稱(chēng)+文件拓展名。

(3)、getContentType方法

getContentType方法獲取的是文件的類(lèi)型,注意是文件的類(lèi)型,不是文件的拓展名。

(4)、isEmpty方法

isEmpty方法用來(lái)判斷傳入的文件是否為空,如果為空則表示沒(méi)有傳入任何文件。

(5)、getSize方法

getSize方法用來(lái)獲取文件的大小,單位是字節(jié)。

(6)、getBytes方法

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

(7)、getInputStream方法

getInputStream方法用來(lái)將文件轉(zhuǎn)換成輸入流的形式來(lái)傳輸文件,會(huì)拋出IOException異常。

(8)、transferTo方法

transferTo方法用來(lái)將接收文件傳輸?shù)浇o定目標(biāo)路徑,會(huì)拋出IOException、IllegalStateException異常。該方法在實(shí)際項(xiàng)目開(kāi)發(fā)中使用較少。文件上傳主要是用這個(gè)方法實(shí)現(xiàn)!

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

相關(guān)文章

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

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

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

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

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

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

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

    Springboot的yml配置文件用法

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

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

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

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

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

    java 迭代器模式實(shí)例詳解

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

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

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

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

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

    Java中的ArrayList集合源碼解析

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

最新評(píng)論