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

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

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

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

  • MultipartFile是spring的一部分,F(xiàn)ile則是java的標(biāo)準(zhǔn)類(lèi)
  • 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工具類(lèi)的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)存到本地磁盤(pán)的方式的詳細(xì)內(nèi)容,更多關(guān)于Spring MultipartFile轉(zhuǎn)存到磁盤(pán)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring獲取管理對(duì)象常用方法詳解

    Spring獲取管理對(duì)象常用方法詳解

    這篇文章主要介紹了Spring獲取管理對(duì)象常用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 利用JAVA反射,讀取數(shù)據(jù)庫(kù)表名,自動(dòng)生成對(duì)應(yīng)實(shí)體類(lèi)的操作

    利用JAVA反射,讀取數(shù)據(jù)庫(kù)表名,自動(dòng)生成對(duì)應(yīng)實(shí)體類(lèi)的操作

    這篇文章主要介紹了利用JAVA反射,讀取數(shù)據(jù)庫(kù)表名,自動(dòng)生成對(duì)應(yīng)實(shí)體類(lèi)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 淺談JSP是如何編譯成servlet并提供服務(wù)的

    淺談JSP是如何編譯成servlet并提供服務(wù)的

    JSP是Servlet的一種特殊形式,JSP頁(yè)面最終是編譯為Servlet執(zhí)行的,那么本文主要介紹了JSP是如何編譯成servlet并提供服務(wù)的,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解決javac不是內(nèi)部或外部命令,也不是可運(yùn)行程序的報(bào)錯(cuò)問(wèn)題

    解決javac不是內(nèi)部或外部命令,也不是可運(yùn)行程序的報(bào)錯(cuò)問(wèn)題

    在學(xué)著使用Java的命令行來(lái)編譯java文件的時(shí)候,遇到了這個(gè)問(wèn)題,本文主要介紹了解決javac不是內(nèi)部或外部命令,也不是可運(yùn)行程序的報(bào)錯(cuò)問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 基于spring DI的三種注入方式分析

    基于spring DI的三種注入方式分析

    這篇文章主要介紹了基于spring DI的三種注入方式分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-07-07
  • Java實(shí)現(xiàn)驗(yàn)證碼的產(chǎn)生和驗(yàn)證

    Java實(shí)現(xiàn)驗(yàn)證碼的產(chǎn)生和驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)驗(yàn)證碼的產(chǎn)生和驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2012-01-01
  • 一文搞懂Spring中@Autowired和@Resource的區(qū)別

    一文搞懂Spring中@Autowired和@Resource的區(qū)別

    @Autowired?和?@Resource?都是?Spring/Spring?Boot?項(xiàng)目中,用來(lái)進(jìn)行依賴(lài)注入的注解。它們都提供了將依賴(lài)對(duì)象注入到當(dāng)前對(duì)象的功能,但二者卻有眾多不同,并且這也是常見(jiàn)的面試題之一,所以我們今天就來(lái)盤(pán)它
    2022-08-08
  • SpringCloud使用集中配置組件Config規(guī)避信息泄露

    SpringCloud使用集中配置組件Config規(guī)避信息泄露

    項(xiàng)目應(yīng)用中,數(shù)據(jù)庫(kù)連接信息、Access-key、Secret-key等由于其及其敏感和特殊性,一旦泄露出去就很可能會(huì)使得應(yīng)用遭到黑客攻擊,例如數(shù)據(jù)庫(kù)賬號(hào)密碼泄露可能導(dǎo)致“拖庫(kù)”,甚至數(shù)據(jù)丟失。此等事件偶有發(fā)生,那么,在分布式微服務(wù)項(xiàng)目中,怎么避免這種情況呢
    2022-07-07
  • Java vector的詳解及實(shí)例

    Java vector的詳解及實(shí)例

    這篇文章主要介紹了Java vector的詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java讀寫(xiě)pdf文件的詳細(xì)實(shí)現(xiàn)方法

    Java讀寫(xiě)pdf文件的詳細(xì)實(shí)現(xiàn)方法

    最近公司的項(xiàng)目中需要操作pdf文件,所以這里給大家總結(jié)下方法,這篇文章主要給大家介紹了關(guān)于Java讀寫(xiě)pdf文件的詳細(xì)實(shí)現(xiàn)方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09

最新評(píng)論

定陶县| 南通市| 大洼县| 泸水县| 东宁县| 五大连池市| 隆子县| 嘉荫县| 时尚| 德阳市| 叙永县| 驻马店市| 铜陵市| 杨浦区| 金秀| 铁力市| 陵水| 内江市| 林甸县| 沙雅县| 班玛县| 甘泉县| 平和县| 乌鲁木齐县| 鄂伦春自治旗| 卫辉市| 祁门县| 新竹市| 荥阳市| 中宁县| 丰都县| 赤城县| 沙河市| 彭泽县| 河间市| 阳谷县| 泊头市| 新余市| 揭东县| 渭南市| 娱乐|