Spring Boot文件上傳最新解決方案
一、創(chuàng)建一個(gè)簡(jiǎn)單的包含WEB依賴(lài)的SpringBoot項(xiàng)目
pom.xml
內(nèi)容:
<!-- Spring Boot web啟動(dòng)器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jsp --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<scope>provided</scope>--> </dependency>
二、配置文件上傳的文件大小限制
application.properties
配置文件添加:
# 上傳文件總的最大值 spring.servlet.multipart.max-request-size=10MB # 單個(gè)文件的最大值 spring.servlet.multipart.max-file-size=10MB ## jsp spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
spring.servlet.multipart.max-file-size
限制單個(gè)文件的最大值spring.servlet.multipart.max-request-size
限制上傳的多個(gè)文件的總大小
三、單文件上傳示例
1、創(chuàng)建Controller控制類(lèi),內(nèi)容如下:
package com.songguoliang.springboot.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.List; /** * @Description * @Author sgl * @Date 2018-05-15 14:04 */ @Controller public class UploadController { private static final Logger LOGGER = LoggerFactory.getLogger(UploadController.class); @GetMapping("/upload") public String upload() { return "upload"; } @PostMapping("/upload") @ResponseBody public String upload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return "上傳失敗,請(qǐng)選擇文件"; } String fileName = file.getOriginalFilename(); String filePath = "/Users/itinypocket/workspace/temp/"; File dest = new File(filePath + fileName); try { file.transferTo(dest); LOGGER.info("上傳成功"); return "上傳成功"; } catch (IOException e) { LOGGER.error(e.toString(), e); } return "上傳失??!"; } }
2、創(chuàng)建upload.jsp
文件
只有一個(gè)表單,選擇文件,form的enctype
為multipart/form-data
:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <title>單文件上傳</title> </head> <body> <form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="submit" value="提交"> </form> </body> </html>
3、通過(guò)springboot插件啟動(dòng)項(xiàng)目,瀏覽器輸入http://localhost:8080/upload
:
選擇文件點(diǎn)擊提交按鈕返回成功信息,我們上傳的文件保存在/Users/itinypocket/workspace/temp
路徑下:
四、多文件上傳
1、創(chuàng)建多文件上傳的jsp頁(yè)面,多文件上傳頁(yè)面只是比單文件上傳多了file選擇的input而已,multiUpload.jsp
內(nèi)容如下:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <title>多文件上傳</title> </head> <body> <form method="post" action="/multiUpload" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="file" name="file"><br> <input type="file" name="file"><br> <input type="submit" value="提交"> </form> </body> </html>
2、在UploadController
里添加多文件上傳的方法
@GetMapping("/multiUpload") public String multiUpload() { return "multiUpload"; } @PostMapping("/multiUpload") @ResponseBody public String multiUpload(HttpServletRequest request) { List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); String filePath = "/Users/itinypocket/workspace/temp/"; for (int i = 0; i < files.size(); i++) { MultipartFile file = files.get(i); if (file.isEmpty()) { return "上傳第" + (i++) + "個(gè)文件失敗"; } String fileName = file.getOriginalFilename(); File dest = new File(filePath + fileName); try { file.transferTo(dest); LOGGER.info("第" + (i + 1) + "個(gè)文件上傳成功"); } catch (IOException e) { LOGGER.error(e.toString(), e); return "上傳第" + (i++) + "個(gè)文件失敗"; } } return "上傳成功"; }
3、重啟服務(wù),瀏覽器輸入http://localhost:8080/multiUpload
:
4、然后選擇要上傳的文件,點(diǎn)擊提交按鈕,得到成功信息:
我們選擇的三個(gè)文件已被成功上傳到/Users/itinypocket/workspace/temp
路徑下。
分享一個(gè)零基礎(chǔ),通俗易懂,而且非常風(fēng)趣幽默的人工智能教程(如不能直接點(diǎn)擊訪問(wèn),請(qǐng)以“右鍵”->“在新標(biāo)簽頁(yè)中打開(kāi)鏈接”方式打開(kāi))網(wǎng)站,網(wǎng)址:https://www.cbedai.net/gnailoug/
到此這篇關(guān)于Spring Boot文件上傳最新解決方案的文章就介紹到這了,更多相關(guān)Spring Boot文件上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot實(shí)現(xiàn)本地存儲(chǔ)文件上傳及提供HTTP訪問(wèn)服務(wù)的方法
- SpringBoot 中大文件(分片上傳)斷點(diǎn)續(xù)傳與極速秒傳功能的實(shí)現(xiàn)
- spring boot上傳文件出錯(cuò)問(wèn)題如何解決
- springboot實(shí)現(xiàn)文件上傳步驟解析
- springboot以FTP方式上傳文件到遠(yuǎn)程服務(wù)器
- SpringBoot實(shí)現(xiàn)Excel文件批量上傳導(dǎo)入數(shù)據(jù)庫(kù)
- springboot實(shí)現(xiàn)單文件和多文件上傳
- springboot上傳文件過(guò)大的500異常解決
相關(guān)文章
關(guān)于Jmeter接口測(cè)試實(shí)戰(zhàn)-Cookies
這篇文章主要介紹了關(guān)于Jmeter接口測(cè)試實(shí)戰(zhàn)-Cookies問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn)功能(實(shí)例代碼)
這篇文章主要介紹了Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn),實(shí)現(xiàn)代碼很簡(jiǎn)單,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08java集合之CopyOnWriteArrayList源碼解析
這篇文章主要介紹了java集合之CopyOnWriteArrayList源碼解析,容器array是volatile修飾的,即set和get方法都是線程安全的,整個(gè)添加過(guò)程上了鎖,所以整體是通過(guò)volatile和lock來(lái)保證的線程安全,需要的朋友可以參考下2023-12-12java通過(guò)Idea遠(yuǎn)程一鍵部署springboot到Docker詳解
這篇文章主要介紹了java通過(guò)Idea遠(yuǎn)程一鍵部署springboot到Docker詳解,Idea是Java開(kāi)發(fā)利器,springboot是Java生態(tài)中最流行的微服務(wù)框架,docker是時(shí)下最火的容器技術(shù),那么它們結(jié)合在一起會(huì)產(chǎn)生什么化學(xué)反應(yīng)呢?的相關(guān)資料2019-06-06Java常用工具類(lèi)庫(kù)——Hutool的使用簡(jiǎn)介
這篇文章主要介紹了Java常用工具類(lèi)庫(kù)——Hutool的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-04-04