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

springboot實(shí)現(xiàn)單、多文件上傳過程(前后端都有)

 更新時(shí)間:2025年12月06日 09:23:31   作者:五顏六色的屁  
Spring Boot中實(shí)現(xiàn)文件上傳,前端使用`file`類型的`input`表單,后端通過`MultipartFile`類接收文件,上傳接口接收`MultipartFile`參數(shù),調(diào)用其方法處理文件,單文件上傳直接處理,多文件上傳需遍歷`MultipartFile`數(shù)組

簡(jiǎn)單寫一下springboot中文件上傳的簡(jiǎn)單實(shí)現(xiàn)。

最重要的其實(shí)就是一個(gè)文件上傳類:MultipartFile

實(shí)現(xiàn)步驟:

一.前端實(shí)現(xiàn)

h5中,使用file類型的input表單,主要有幾個(gè)值得注意的。

  • 1.表單一定要有name屬性,用來和后端參數(shù)列表中對(duì)應(yīng)
  • 2.如果是多文件同時(shí)上傳,則這幾個(gè)表單的name屬性要一樣
  • 3.name屬性建議別和java實(shí)體類中的屬性名相同

例如:

二.后端實(shí)現(xiàn)

controller中的實(shí)現(xiàn)

1.編寫一個(gè)接口

參數(shù)列表如圖:

2.這時(shí)候就是對(duì)MultipartFile類中方法的調(diào)用

其他方法,自行jdk找,我這簡(jiǎn)單介紹幾個(gè)常用的,話不多說,直接上代碼:

  @RequestMapping("/newUserSave")
    public void newUserSave(HttpServletRequest req,
                              @RequestParam(value = "a_idPicPath") MultipartFile[] multipartFiles,
                              SmbmsUser smbmsUser){
        logger.info("UserController method newUserSave params:"+smbmsUser);
        //這個(gè)smbmsUser對(duì)象,是前端頁(yè)面的數(shù)據(jù)封裝進(jìn)來的smbmsUser對(duì)象
        try {
            //多文件上傳改為數(shù)組
            for (int i = 0; i <multipartFiles.length; i++) {
            	//判斷文件是否為空
                if(!multipartFiles[i].isEmpty()){
                    //獲取原文件名
                    String oldName = multipartFiles[i].getOriginalFilename();
                    //獲取擴(kuò)展名
                    String extendName = "."+FilenameUtils.getExtension(oldName);
                    int fileSize = 5000000;  //5M
                    if(multipartFiles[i].getSize()>fileSize){
                        req.setAttribute("uploadError","上傳文件太大");
                        return "useradd";
                    }else if(!".jpg".equals(extendName)){
                        req.setAttribute("uploadError","上傳文件格式不正確");
                        return "useradd";
                    }
                    //創(chuàng)建本地文件夾
                    String filePath = "d:"+ File.separator+"1_IDEA"
                            +File.separator+ UUID.randomUUID().toString()+extendName;
                    //創(chuàng)建文件
                    File file = new File(filePath);
                    if(!file.exists()){
                        file.mkdirs();
                    }
                    //將文件以流的形式上傳到本地
                    multipartFiles[i].transferTo(file);
                    if(i==0){
                    	//i對(duì)應(yīng)前端文件的順序,賦值給相應(yīng)的屬性即可
                        smbmsUser.setPicPath(filePath);
                    }else{
                        smbmsUser.setWorkPath(filePath);
                    }

                }
            }

        } catch (IOException e) {
            logger.error("UserController method newUserSave error params:"+smbmsUser,e);
            e.printStackTrace();
        }
    }

3.單文件和多文件的區(qū)別

單文件去掉[ ]就好了,再把for循環(huán)去除,其他代碼一致

總結(jié)

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

  • mybatis配置獲取自增主鍵的操作方法

    mybatis配置獲取自增主鍵的操作方法

    當(dāng)需要?jiǎng)倓偛迦霐?shù)據(jù)庫(kù)的數(shù)據(jù)對(duì)應(yīng)的新增主鍵時(shí),通過配置xml文件,使數(shù)據(jù)庫(kù)返回新增主鍵id,并把主鍵id與類參數(shù)對(duì)應(yīng),本文給大家介紹了mybatis配置獲取自增主鍵的操作方法,需要的朋友可以參考下
    2024-05-05
  • spring boot 使用utf8mb4的操作

    spring boot 使用utf8mb4的操作

    這篇文章主要介紹了spring boot 使用utf8mb4的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java中的@builder建造者模式詳細(xì)解析

    Java中的@builder建造者模式詳細(xì)解析

    這篇文章主要介紹了Java中的@builder建造者模式詳細(xì)解析,使用 @Builder 注解可以簡(jiǎn)化手動(dòng)編寫建造者模式的代碼,使代碼更加簡(jiǎn)潔易讀,它可以自動(dòng)生成鏈?zhǔn)秸{(diào)用的方法來設(shè)置對(duì)象的屬性,并且可以在需要時(shí)進(jìn)行可選屬性的設(shè)置,需要的朋友可以參考下
    2024-01-01
  • ObjectMapper 如何忽略字段大小寫

    ObjectMapper 如何忽略字段大小寫

    這篇文章主要介紹了使用ObjectMapper實(shí)現(xiàn)忽略字段大小寫操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java實(shí)現(xiàn)微信紅包分配規(guī)則

    Java實(shí)現(xiàn)微信紅包分配規(guī)則

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)仿微信紅包分配規(guī)則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • spring依賴注入知識(shí)點(diǎn)分享

    spring依賴注入知識(shí)點(diǎn)分享

    在本篇文章里小編給大家整理的是關(guān)于spring依賴注入知識(shí)點(diǎn)以及相關(guān)代碼內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-11-11
  • Java中使用ForkJoinPool的實(shí)現(xiàn)示例

    Java中使用ForkJoinPool的實(shí)現(xiàn)示例

    ForkJoinPool是一個(gè)功能強(qiáng)大的Java類,用于處理計(jì)算密集型任務(wù),本文主要介紹了Java中使用ForkJoinPool的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Java實(shí)現(xiàn)四則混合運(yùn)算代碼示例

    Java實(shí)現(xiàn)四則混合運(yùn)算代碼示例

    這篇文章主要介紹了Java實(shí)現(xiàn)四則混合運(yùn)算代碼示例,文中展示了詳細(xì)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • java中的Timer和Timertask的關(guān)系解讀

    java中的Timer和Timertask的關(guān)系解讀

    本文詳細(xì)介紹了Java中的Timer和TimerTask類,包括它們之間的關(guān)系、API的使用方法、注意事項(xiàng)以及操作案例,Timer是一個(gè)調(diào)度器,而TimerTask是具體的任務(wù)類,Timer僅對(duì)應(yīng)一個(gè)線程,不保證任務(wù)執(zhí)行的精確性,但線程安全,一個(gè)Timer可以調(diào)度多個(gè)TimerTask
    2024-12-12
  • 最新評(píng)論

    承德县| 峨边| 洪江市| 上林县| 嵊泗县| 牙克石市| 嘉善县| 酉阳| 桓仁| 肥东县| 河北区| 泗阳县| 资中县| 定日县| 麻阳| 富川| 厦门市| 如东县| 嘉祥县| 霸州市| 镇巴县| 同仁县| 冀州市| 成都市| 阜阳市| 甘德县| 清徐县| 夏邑县| 共和县| 深泽县| 马鞍山市| 玉树县| 曲阜市| 朝阳市| 乌兰浩特市| 凉山| 托克逊县| 佳木斯市| 满城县| 颍上县| 茶陵县|