springboot實(shí)現(xiàn)單、多文件上傳過(guò)程(前后端都有)
簡(jiǎn)單寫一下springboot中文件上傳的簡(jiǎn)單實(shí)現(xiàn)。
最重要的其實(shí)就是一個(gè)文件上傳類:MultipartFile
實(shí)現(xiàn)步驟:
一.前端實(shí)現(xiàn)
h5中,使用file類型的input表單,主要有幾個(gè)值得注意的。
- 1.表單一定要有name屬性,用來(lái)和后端參數(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è)常用的,話不多說(shuō),直接上代碼:
@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)來(lái)的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è)參考,也希望大家多多支持腳本之家。
- SpringBoot實(shí)現(xiàn)文件上傳服務(wù)器全過(guò)程
- SpringBoot文件上傳的幾種常見方式(單文件上傳、多文件上傳)
- Springboot實(shí)現(xiàn)文件上傳至linux指定目錄
- 詳解SpringBoot中文件上傳大小限制問(wèn)題的解決方案
- Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟
- 基于SpringBoot框架實(shí)現(xiàn)文件上傳下載分享功能
- SpringBoot集成Knife4j報(bào)錯(cuò):文件上傳不顯示文件域問(wèn)題的解決方案
- SpringBoot實(shí)現(xiàn)文件上傳下載的7種方法
相關(guān)文章
Spring學(xué)習(xí)之動(dòng)態(tài)代理(JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理)
本篇文章主要介紹了Spring學(xué)習(xí)之動(dòng)態(tài)代理(JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼
這篇文章主要介紹了application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
10個(gè)Elasticsearch查詢的實(shí)用技巧分享
Elasticsearch是一個(gè)非常流行的搜索引擎,已經(jīng)成為了許多企業(yè)的首選解決方案。本文將向大家介紹10個(gè)實(shí)用的Elasticsearch查詢技巧,并配上對(duì)應(yīng)的代碼示例,希望對(duì)大家有所幫助2023-04-04
基于Eclipce配置Spring Boot過(guò)程圖解
這篇文章主要介紹了基于Eclipce配置Spring Boot過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Java通過(guò)值查找對(duì)應(yīng)的枚舉的實(shí)現(xiàn)
本文主要介紹了Java通過(guò)值查找對(duì)應(yīng)的枚舉的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
IDEA工具maven不加載jar包問(wèn)題排查及解決
文章記錄了在IDEA中Maven不加載jar包的問(wèn)題排查過(guò)程,嘗試更換Maven、檢查配置等方法均未解決,最后僅通過(guò)命令行手動(dòng)執(zhí)行mvn命令暫時(shí)解決,但I(xiàn)DEA中依賴仍不加載2025-10-10
springboot?maven?plugin報(bào)紅的解決辦法
本文主要介紹了springboot?maven?plugin報(bào)紅的解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
SpringBoot設(shè)置接口超時(shí)時(shí)間的方法
這篇文章主要介紹了SpringBoot設(shè)置接口超時(shí)時(shí)間的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

