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

Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式

 更新時(shí)間:2024年10月14日 09:38:26   作者:當(dāng)歸1024  
在Java中處理文件向來(lái)是一種不是很方便的操作,然后隨著Spring框架的崛起,使用Spring框架中的MultipartFile來(lái)處理文件也是件很方便的事了,今天就給大家介紹Spring將MultipartFile轉(zhuǎn)存到本地磁盤的方式,需要的朋友可以參考下

兩者的區(qū)別和聯(lián)系

  • MultipartFile是spring的一部分,F(xiàn)ile則是java的標(biāo)準(zhǔn)類
  • MultipartFile用于接收web傳遞的文件,F(xiàn)ile操作本地系統(tǒng)的文件

MultipartFile 轉(zhuǎn)換File的三種方式

  • 使用MultipartFile 自帶的transferTo方法
  • 使用java自帶的FileOutPutStream流
  • 使用java自帶的NIO方法

transferTo保存

在這里插入圖片描述

代碼

參數(shù):目標(biāo)文件的絕對(duì)路徑

    /**
     * Upload file 使用MultipartFile接收文件 transferTo方法保存文件
     * @param file file
     * @return
     */
    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) {
        // 判斷文件是否為空
        if (file.isEmpty()) {
            return "File is empty!";
        }
        try {
            // 設(shè)置文件存儲(chǔ)路徑
            String uploadFolder = UPLOAD_FOLDER;
            // 判斷文件夾是否存在,不存在則創(chuàng)建
            File folder = new File(uploadFolder);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            // 獲取文件名
            String fileName = file.getOriginalFilename();
            // 設(shè)置文件存儲(chǔ)路徑
            File targetFile = new File(uploadFolder + File.separator + fileName);
            // 保存文件
            file.transferTo(targetFile);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return "Upload successfully!";
    }

測(cè)試

借助apifox工具測(cè)試,MutipartFile 選擇body

在這里插入圖片描述

在這里插入圖片描述

測(cè)試結(jié)果:同時(shí)創(chuàng)建了文件夾和文件

在這里插入圖片描述

使用原生的FileOutputStream保存文件

  • 創(chuàng)建 FileOutputStream流
  • 將MultipartFile 文件轉(zhuǎn)換為字節(jié)數(shù)組輸入到FileOutputStream流中,保存文件
    /**
     * 使用原生的FileOutputStream保存文件
     */
    @PostMapping("/upload2")
    public String upload2(@RequestParam("file") MultipartFile file) {
        // 判斷文件是否為空
        if (file.isEmpty()) {
            return "File is empty!";
        }
        try {
            // 設(shè)置文件存儲(chǔ)路徑
            String uploadFolder = UPLOAD_FOLDER;
            // 判斷文件夾是否存在,不存在則創(chuàng)建
            File folder = new File(uploadFolder);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            // 獲取文件名
            String fileName = file.getOriginalFilename();
            // 設(shè)置文件存儲(chǔ)路徑
            File targetFile = new File(uploadFolder + File.separator + fileName);
            // 保存文件 使用原生的FileOutputStream保存文件
            try(FileOutputStream fileOutputStream = new FileOutputStream(targetFile)) {
                fileOutputStream.write(file.getBytes());
            }


        } catch (Exception e) {
            e.printStackTrace();
            return "Upload failed!";
        }

        return "Upload successfully!";
    }

NIO復(fù)制文件

使用Files工具類的copy方法,三個(gè)參數(shù):源文件的輸入流、目標(biāo)文件的文件夾特殊操作:REPLACE_EXISTING的作用是 若存在則替換
    /**
     * 使用原生的NIO復(fù)制保存文件
     */
    @PostMapping("/upload3")
    public String upload3(@RequestParam("file") MultipartFile file) {
        // 判斷文件是否為空
        if (file.isEmpty()) {
            return "File is empty!";
        }
        try {
            // 設(shè)置文件存儲(chǔ)路徑
            String uploadFolder = UPLOAD_FOLDER;
            // 判斷文件夾是否存在,不存在則創(chuàng)建
            File folder = new File(uploadFolder);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            // 獲取文件名
            String fileName = file.getOriginalFilename();
            // 設(shè)置文件存儲(chǔ)路徑
            File targetFile = new File(uploadFolder + File.separator + fileName);
            // 保存文件 使用原生的NIO復(fù)制保存文件
            Files.copy(file.getInputStream(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);

        } catch (Exception e) {
            e.printStackTrace();
            return "Upload failed!";
        }

        return "Upload successfully!";
    }

以上就是Spring將MultipartFile轉(zhuǎn)存到本地磁盤的方式的詳細(xì)內(nèi)容,更多關(guān)于Spring MultipartFile轉(zhuǎn)存到磁盤的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

  • Java將數(shù)組轉(zhuǎn)換成字符串的四種方法總結(jié)

    Java將數(shù)組轉(zhuǎn)換成字符串的四種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java將數(shù)組轉(zhuǎn)換成字符串的四種方法,每種方法都有其適用的場(chǎng)景和優(yōu)缺點(diǎn),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • springboot整合spring-retry的實(shí)現(xiàn)示例

    springboot整合spring-retry的實(shí)現(xiàn)示例

    本文將結(jié)合實(shí)例代碼,介紹springboot整合spring-retry的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • idea2023創(chuàng)建JavaWeb教程之右鍵沒有Servlet的問題解決

    idea2023創(chuàng)建JavaWeb教程之右鍵沒有Servlet的問題解決

    最近在寫一個(gè)javaweb項(xiàng)目,但是在IDEA中創(chuàng)建好項(xiàng)目后,在搭建結(jié)構(gòu)的時(shí)候創(chuàng)建servlet文件去沒有選項(xiàng),所以這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于idea2023創(chuàng)建JavaWeb教程之右鍵沒有Servlet問題的解決方法,需要的朋友可以參考下
    2023-10-10
  • 全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

    全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

    這篇文章主要介紹了全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java中枚舉類enum的values()方法舉例詳解

    Java中枚舉類enum的values()方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于Java中枚舉類enum的values()方法舉例詳解,作為一種常用方法,可以在枚舉中對(duì)數(shù)組里的枚舉值進(jìn)行遍歷,這就是values()方法的使用,需要的朋友可以參考下
    2023-11-11
  • SpringBoot?2.x整合Log4j2日志的詳細(xì)步驟

    SpringBoot?2.x整合Log4j2日志的詳細(xì)步驟

    log4j2優(yōu)越的性能其原因在于log4j2使用了LMAX,一個(gè)無(wú)鎖的線程間通信庫(kù)代替了,logback和log4j之前的隊(duì)列,并發(fā)性能大大提升,下面這篇文章主要給大家介紹了關(guān)于SpringBoot?2.x整合Log4j2日志的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Spring配置多數(shù)據(jù)源導(dǎo)致事物無(wú)法回滾問題

    Spring配置多數(shù)據(jù)源導(dǎo)致事物無(wú)法回滾問題

    這篇文章主要介紹了Spring配置多數(shù)據(jù)源導(dǎo)致事物無(wú)法回滾問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目

    詳解如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目

    本篇文章主要介紹了如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例

    SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例

    這篇文章主要介紹了SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 最新評(píng)論