溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何實現(xiàn)Maven項目web多圖片上傳及格式驗證

發(fā)布時間:2021-10-21 13:33:26 來源:億速云 閱讀:143 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下如何實現(xiàn)Maven項目web多圖片上傳及格式驗證,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

先來展示一下效果

如何實現(xiàn)Maven項目web多圖片上傳及格式驗證

客戶在添加的時候進(jìn)入添加頁面,需要上傳文件時的相關(guān)頁面及代碼

:前端頁面重要代碼,multiple的作用是支持多圖片上傳,此處點擊事件一定要使用onchange事件,切記不要誤用onclick事件?。?/p>

如何實現(xiàn)Maven項目web多圖片上傳及格式驗證

 注:<c:forTokens>標(biāo)簽的作用是以 delims 中的值分割循環(huán)遍歷

以下為前端頁面對應(yīng)的onchange事件的代碼及解析

 //jQuery函數(shù) 對應(yīng)上面的onchange事件
    function uploadFile() {
        //由于該JSP頁面只有一個表單,因此只需要定義下標(biāo)為0即可指定當(dāng)前表單
        let formData = new FormData($("form")[0]);
        //關(guān)鍵代碼:ajax異步上傳圖片
        $.ajax({
            url: "uploadFile",//此處對應(yīng)controller控制層中RequestMapping注解中的值
            data: formData,//需要上傳的表單數(shù)據(jù)
            type: "post",//此處要用post方式上傳,原因是get方式對上傳文件大小有限制
            //processData 默認(rèn)為true,當(dāng)設(shè)置為true的時候,jquery ajax 提交的時候不會序列化 data,而是直接使用data
            processData: false,
            //ajax 中 contentType 設(shè)置為 false 是為了避免 JQuery 對其操作,從而失去分界符,而使服務(wù)器不能正常解析文件。
            contentType: false,
            success: function (msg) {
                //判斷校驗上傳文件的格式是否為常用圖片類型\
                let str = "";
                let split = msg.split(",");//用逗號切割 為數(shù)組
                let flag = false;
                for (let i = 0; i < split.length; i++) {
                    if (split[i].endsWith(".jpg") || split[i].endsWith(".png") || split[i].endsWith(".bmp") || split[i].endsWith(".jpeg") || split[i].endsWith(".gif")) {
                        flag = true;
                    } else {
                        //一旦不滿足上面的條件,就將旗幟flag設(shè)置為false,并打破循環(huán)
                        flag = false;
                        break;
                    }
                    //循環(huán)遍歷數(shù)組拼接字符串,src中需要添加虛擬路徑
                    str += '<img src="/img/' + split[i] + '" width="50" height="50">';
                }
                if (flag) {
                    $("[name=img]").val(msg)
                    $("#sp1").html(str)
                } else {
                    alert("上傳圖片格式錯誤??!")
                    $("[name=img]").val("")//清空之前的代碼,后臺JSR303自動校驗不能為空
                }
            }
        })
    }

接下來看一下后臺controller層的圖片上傳代碼及解析

//@RequestMapping是一個用來處理請求地址映射的注解,可用于類或方法上。
//@RequestParam:將請求參數(shù)綁定到后臺控制器的方法參數(shù)上(是springmvc中接收普通參數(shù)的注解)(以此確保和前端頁面name屬性中的值一致)
    @RequestMapping("uploadFile")
    @ResponseBody //加上 @ResponseBody 后,會直接返回 json 數(shù)據(jù)。
    public String uploadFile(@RequestParam("file") MultipartFile[] files) throws IOException {
        //要存放圖片的本機地址
        String path = "D://img";
        String[] fileNames = new String[files.length];
        String imgs = "";
        for (int i = 0; i < fileNames.length; i++) {
            //UUID用于隨機生成不重復(fù)的文件名
            // getOriginalFilename()該方法用于獲取前臺上傳文件的名稱,和UUID做此處理確保上傳的文件名唯一
            fileNames[i] = UUID.randomUUID().toString() + files[i].getOriginalFilename();
            File file = new File(path, fileNames[i]);
            files[i].transferTo(file);//把文件路徑所指向的文件上傳到對應(yīng)的目錄下。
            imgs += "," + fileNames[i];
        }
        //截取imgs頭部多出來的逗號
        imgs = imgs.substring(1);
        return imgs;
    }

以上是“如何實現(xiàn)Maven項目web多圖片上傳及格式驗證”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI