SpringBoot 學習——檔案上傳
阿新 • • 發佈:2021-02-06
技術標籤:學習javaSpringjavaspring bootspringspringmvc
文章目錄
前言
在學習了SpringMVC的檔案上傳方式後,如何使用SpringBoot來完成檔案的上傳?
一、操作步驟
1.環境搭建
1.1匯入SpringBoot的場景啟動器
pom.xml
<!--匯入父專案依賴-->
<parent>
<groupId >org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/>
</parent>
<!--新增thymeleaf的場景-->
<dependency>
<groupId>org.springframework.boot</ groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--新增web開發的場景-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</ artifactId>
</dependency>
1.2 前端頁面
upload.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www/thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--
檔案上傳的前提:
1. 表單的提交方式為post
2. 編碼方式為多部分/格式資料(enctype=multipart/form-data)
-->
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="photo"/> 單檔案上傳<br>
<!--此處 multiple實現多檔案上傳-->
<input type="file" name="photos" multiple/> 多檔案上傳<br>
<input type="submit" value="上傳">
</form>
</body>
</html>
實現效果:
2.編寫邏輯
2.1 編寫Controller
uploadController.java
@Controller
public class uploadController {
@GetMapping("/")
public String main(){
//跳轉到upload.html頁面
return "upload";
}
//實現檔案上傳
@PostMapping("/upload")
public String upload(@RequestPart("photo") MultipartFile photo, //@RequestPart+MultipartFile==>將檔案封裝到引數中去
@RequestPart("photos") MultipartFile[] photos) throws IOException {//多檔案上傳用MultipartFile[]陣列來封裝引數
//再進行操作之前,isEmpty()判斷檔案是否為空
if(!photo.isEmpty()){
//MultipartFile檔案中transferTo(儲存路徑)方法將檔案寫到伺服器中
photo.transferTo(new File("D:\\"+photo.getOriginalFilename()));
}
if(photos.length!=0){
//遍歷
for (MultipartFile file : photos) {
file.transferTo(new File("D:\\"+file.getOriginalFilename()));
}
}
return "upload";
}
}
2.2 上傳檔案的大小的限制
SpringBoot中一切都是預設配置,檔案上傳的大小等等也不例外。上傳的檔案預設最大為1MB。接下來介紹如何更改預設配置:
spring:
servlet:
multipart:
max-file-size: 50MB #單個檔案上傳最大為50M
max-request-size: 100MB #總的檔案上傳大小最大為100M
總結
[email protected](“引數名”)+MultipartFile類:實現檔案的封裝
2.MultipartFile中的transfer方法實現將檔案寫到伺服器上的功能
後續我會補充上SpringMVC方式的檔案上傳和下載,分析兩者的區別與優劣