最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用MultipartFile實(shí)現(xiàn)文件上傳功能

 更新時(shí)間:2024年06月14日 09:15:11   作者:Cz范特西  
這篇文章主要介紹了使用MultipartFile實(shí)現(xiàn)文件上傳功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

MultipartFile是spring類(lèi)型,代表HTML中form data方式上傳的文件,包含二進(jìn)制數(shù)據(jù)+文件名稱(chēng)。

在文件上傳這方面能幫助我們快速簡(jiǎn)潔實(shí)現(xiàn)。

使用

1、yml配置文件

spring:
  servlet:
    multipart:
      max-file-size: 10MB     #單個(gè)最大文件大小,默認(rèn)是1MB
      max-request-size: 100MB   #總請(qǐng)求文件大小

2、API介紹

	multipartFile.getContentType()//在控制臺(tái)打印文件的類(lèi)型
	multipartFile.getName()//返回文件的名稱(chēng)
	multipartFile.getOriginalFilename()//返回文件的原文件名
	multipartFile.getSize() //單位為字節(jié)
	multipartFile.getInputStream() //文件轉(zhuǎn)換為輸入流
	multipartFile.transferTo(new File("D:/"));
		/*上傳的文件需要保存的路徑和文件名稱(chēng),
		  本質(zhì)上還是使用了流,只不過(guò)是封裝了步驟,相當(dāng)于:
			File file = new File("D:/");
	        file.createNewFile();
	        FileOutputStream stream = new FileOutputStream(file);
	        stream.write(multipartFile.getBytes());
	        stream.close();
	    */

3、文件上傳示例

@RestController
@Slf4j
public class UploadTest {

    @RequestMapping("/upload")
    public String upLoad(@RequestPart("file") MultipartFile multipartFile){
        log.info("文件上傳開(kāi)始");
        log.info("文件{}",multipartFile.getOriginalFilename());
        
        if (!multipartFile.isEmpty()){
            try {
                //上傳的文件需要保存的路徑和文件名稱(chēng),路徑需要存在,否則報(bào)錯(cuò)
                multipartFile.transferTo(new File("D:/"++multipartFile.getOriginalFilename()));
            } catch (IllegalStateException | IOException e){
                e.printStackTrace();
                return "上傳失敗";
            }
        } else {
            return "請(qǐng)上傳文件";
        }
        return "上傳成功";
    }
}

注意:

@RequestPart("file")主要用來(lái)處理content-type為 multipart/form-data 或 multipart/mixed stream 發(fā)起的請(qǐng)求,可以獲取請(qǐng)求中的參數(shù)。

因此在此處,前端上傳文件時(shí),key為file,value為文件。

4、postman測(cè)試

由于本人只會(huì)后端不會(huì)做前端,懶得查資料寫(xiě)前端上傳文件功能,就使用postman進(jìn)行測(cè)試。

1、將請(qǐng)求方式改為post。

2、Headers中設(shè)置設(shè)置key=Content-Type,value=multipart/form-data(默認(rèn)已設(shè)置)。

3、在Body中選擇form-data,選擇File格式,KEY填寫(xiě)在后端代碼中編寫(xiě)的@RequestPart(“file”)中的file,value選擇你想要上傳的文件。

4、點(diǎn)擊send即可實(shí)現(xiàn)上傳功能。

文件下載

既然文件上傳功能有了,就在此介紹一下如何實(shí)現(xiàn)文件下載功能。

@RestController
public class DownTest {

    @RequestMapping("/download")
    public ResponseEntity<Object> download() throws IOException {
        //提供下載的文件的路徑
        FileSystemResource file = new FileSystemResource("D:\\cloud/pom.xml");

        HttpHeaders headers = new HttpHeaders();
        headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
        //這里定制下載文件的名稱(chēng)
        headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getFilename()));
        headers.add("Pragma", "no-cache");
        headers.add("Expires", "0");

        return ResponseEntity.ok()
                .headers(headers)
                .contentLength(file.contentLength())
                .contentType(MediaType.parseMediaType("application/octet-stream"))//以二進(jìn)制流的形式返回
                .body(new InputStreamResource(file.getInputStream()));
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot打成jar包瘦身方法總結(jié)

    SpringBoot打成jar包瘦身方法總結(jié)

    springBoot打包的時(shí)候代碼和jar包打包在同一個(gè)jar包里面,會(huì)導(dǎo)致jar包非常龐大,下面這篇文章主要給大家介紹了關(guān)于SpringBoot打的jar包瘦身方法的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Spring實(shí)戰(zhàn)之屬性占位符配置器用法示例

    Spring實(shí)戰(zhàn)之屬性占位符配置器用法示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之屬性占位符配置器用法,結(jié)合實(shí)例形式分析了spring屬性占位符配置器的具體配置及使用技巧,需要的朋友可以參考下
    2019-12-12
  • java 代碼塊與靜態(tài)代碼塊加載順序

    java 代碼塊與靜態(tài)代碼塊加載順序

    這篇文章主要介紹了java 代碼塊與靜態(tài)代碼塊加載順序的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • logback 自定義Pattern模板教程

    logback 自定義Pattern模板教程

    這篇文章主要介紹了logback 自定義Pattern模板教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 使用JPA自定義VO接收返回結(jié)果集(unwrap)

    使用JPA自定義VO接收返回結(jié)果集(unwrap)

    這篇文章主要介紹了使用JPA自定義VO接收返回結(jié)果集(unwrap),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot采用Dynamic-Datasource方式實(shí)現(xiàn)多JDBC數(shù)據(jù)源

    SpringBoot采用Dynamic-Datasource方式實(shí)現(xiàn)多JDBC數(shù)據(jù)源

    在某些情況下,如果我們需要配置多個(gè)數(shù)據(jù)源,本文主要介紹了SpringBoot采用Dynamic-Datasource方式實(shí)現(xiàn)多JDBC數(shù)據(jù)源,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 獲取Java加載器和類(lèi)完整結(jié)構(gòu)的方法分享

    獲取Java加載器和類(lèi)完整結(jié)構(gòu)的方法分享

    這篇文章主要為大家詳細(xì)介紹了獲取Java加載器和類(lèi)完整結(jié)構(gòu)的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-12-12
  • 數(shù)據(jù)庫(kù)基本操作語(yǔ)法歸納總結(jié)

    數(shù)據(jù)庫(kù)基本操作語(yǔ)法歸納總結(jié)

    本篇文章主要介紹了數(shù)據(jù)庫(kù)的一些常用方法及一些基本操作,需要的朋友可以參考下
    2017-04-04
  • java中如何獲取線程名稱(chēng)

    java中如何獲取線程名稱(chēng)

    這篇文章主要介紹了java中如何獲取線程名稱(chēng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • JavaGUI常用三種布局使用介紹

    JavaGUI常用三種布局使用介紹

    這篇文章主要介紹了JavaGUI常用三種布局-FlowLayout、BorderLayout、GridLayout,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-03-03

最新評(píng)論

泽库县| 舟曲县| 蕲春县| 磴口县| 乌兰浩特市| 南宫市| 梅州市| 迁安市| 宁晋县| 迁西县| 宁国市| 兰坪| 池州市| 揭西县| 自治县| 兴宁市| 东莞市| 凤阳县| 博兴县| 吉林市| 卓尼县| 株洲市| 潢川县| 会昌县| 东乡县| 白城市| 龙里县| 浦北县| 建瓯市| 涟水县| 中西区| 荥阳市| 巴塘县| 江都市| 雷州市| 拜泉县| 类乌齐县| 深圳市| 宜黄县| 大邑县| 阿荣旗|