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

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

 更新時(shí)間:2024年10月14日 09:38:26   作者:當(dāng)歸1024  
在Java中處理文件向來是一種不是很方便的操作,然后隨著Spring框架的崛起,使用Spring框架中的MultipartFile來處理文件也是件很方便的事了,今天就給大家介紹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)文件的絕對路徑

    /**
     * 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!";
    }

測試

借助apifox工具測試,MutipartFile 選擇body

在這里插入圖片描述

在這里插入圖片描述

測試結(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)存到磁盤的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring獲取管理對象常用方法詳解

    Spring獲取管理對象常用方法詳解

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

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

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

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

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

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

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

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

    這篇文章主要介紹了基于spring DI的三種注入方式分析,具有很好的參考價(jià)值,希望對大家有所幫助。
    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)目中,用來進(jìn)行依賴注入的注解。它們都提供了將依賴對象注入到當(dāng)前對象的功能,但二者卻有眾多不同,并且這也是常見的面試題之一,所以我們今天就來盤它
    2022-08-08
  • SpringCloud使用集中配置組件Config規(guī)避信息泄露

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

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

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

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

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

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

最新評論

康平县| 池州市| 越西县| 白城市| 江达县| 称多县| 乳源| 华池县| 忻州市| 陇川县| 嘉义市| 扎囊县| 玉环县| 普定县| 罗江县| 昆明市| 营山县| 玉林市| 永寿县| 天柱县| 大田县| 霍州市| 积石山| 卢湾区| 启东市| 伊川县| 濮阳县| 塔河县| 嘉鱼县| 东辽县| 冀州市| 岱山县| 荔波县| 安丘市| 成武县| 新巴尔虎左旗| 昂仁县| 枣阳市| 武安市| 鄂州市| 安阳市|