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

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

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

前言

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

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

使用

1、yml配置文件

spring:
  servlet:
    multipart:
      max-file-size: 10MB     #單個最大文件大小,默認是1MB
      max-request-size: 100MB   #總請求文件大小

2、API介紹

	multipartFile.getContentType()//在控制臺打印文件的類型
	multipartFile.getName()//返回文件的名稱
	multipartFile.getOriginalFilename()//返回文件的原文件名
	multipartFile.getSize() //單位為字節(jié)
	multipartFile.getInputStream() //文件轉(zhuǎn)換為輸入流
	multipartFile.transferTo(new File("D:/"));
		/*上傳的文件需要保存的路徑和文件名稱,
		  本質(zhì)上還是使用了流,只不過是封裝了步驟,相當于:
			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("文件上傳開始");
        log.info("文件{}",multipartFile.getOriginalFilename());
        
        if (!multipartFile.isEmpty()){
            try {
                //上傳的文件需要保存的路徑和文件名稱,路徑需要存在,否則報錯
                multipartFile.transferTo(new File("D:/"++multipartFile.getOriginalFilename()));
            } catch (IllegalStateException | IOException e){
                e.printStackTrace();
                return "上傳失敗";
            }
        } else {
            return "請上傳文件";
        }
        return "上傳成功";
    }
}

注意:

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

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

4、postman測試

由于本人只會后端不會做前端,懶得查資料寫前端上傳文件功能,就使用postman進行測試。

1、將請求方式改為post。

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

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

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

文件下載

既然文件上傳功能有了,就在此介紹一下如何實現(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");
        //這里定制下載文件的名稱
        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"))//以二進制流的形式返回
                .body(new InputStreamResource(file.getInputStream()));
    }
}

總結

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

相關文章

  • SpringBoot打成jar包瘦身方法總結

    SpringBoot打成jar包瘦身方法總結

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

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

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

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

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

    logback 自定義Pattern模板教程

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

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

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

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

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

    獲取Java加載器和類完整結構的方法分享

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

    數(shù)據(jù)庫基本操作語法歸納總結

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

    java中如何獲取線程名稱

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

    JavaGUI常用三種布局使用介紹

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

最新評論

青铜峡市| 象山县| 靖宇县| 常德市| 黄龙县| 顺平县| 普陀区| 山西省| 敖汉旗| 承德县| 昌吉市| 麦盖提县| 延长县| 惠水县| 江口县| 乐平市| 镶黄旗| 富蕴县| 灵山县| 桦川县| 定兴县| 洞口县| 镇沅| 嘉禾县| 石楼县| 河源市| 平顺县| 鹤峰县| 山东| 淮滨县| 蒲城县| 靖宇县| 孝感市| 江油市| 安康市| 东乡县| 申扎县| 银川市| 武清区| 瑞金市| 郧西县|