Spring Boot 实现文件上传下载的详细教程
45 浏览量
更新于2024-09-03
收藏 267KB PDF 举报
"Spring Boot 文件上传与下载的示例代码"
在Spring Boot框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。本文将详细介绍如何在Spring Boot项目中实现这一功能,包括创建REST API、使用Postman进行测试以及构建前端界面进行交互。
首先,确保你的开发环境已经配置了Spring Boot 2.1.3.RELEASE、Gradle 5.2.1、Java 1.8以及IntelliJ IDEA 2018.3.3。在IntelliJ IDEA中,通过Spring Initializr创建新项目,选择Maven或Gradle作为构建工具,并添加Web依赖。
项目创建完成后,需要配置Spring Boot以支持文件上传。打开`application.properties`文件,添加以下配置项来启用multipart上传并设定文件大小限制:
```properties
server.port=80
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=215MB
```
这里设置了服务器监听的端口、启用multipart上传,以及设置文件上传的大小限制。`file-size-threshold`表示文件在内存中达到的大小阈值,超过这个值就会被写入到磁盘。`max-file-size`和`max-request-size`分别限制了单个文件和整个请求的最大大小。
接下来,创建一个Controller,用于处理文件上传和下载的HTTP请求。在Controller中,你可以定义两个主要的方法:一个用于文件上传,一个用于文件下载。例如:
```java
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
@RestController
@RequestMapping("/files")
public class FileController {
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 文件上传逻辑
// ...
return "文件上传成功";
}
@GetMapping("/download/{filename}")
public ResponseEntity<Void> downloadFile(@PathVariable String filename, HttpServletResponse response) throws IOException {
// 文件下载逻辑
// ...
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename)
.body(null);
}
}
```
在`handleFileUpload`方法中,`MultipartFile`参数用于接收上传的文件。你可以将文件保存到服务器的指定目录,并返回一个成功消息。在`downloadFile`方法中,根据文件名从服务器上读取文件,并设置响应头以指示浏览器以附件形式下载文件。
为了测试这些API,可以使用Postman发送POST请求到`/files/upload`,附带文件作为请求体。对于下载,发送GET请求到`/files/download/{filename}`,其中`{filename}`是你要下载的文件名。
为了提供一个完整的用户界面,可以使用HTML、CSS和JavaScript创建一个简单的Web页面,通过AJAX调用这些API。例如,使用jQuery的`$.ajax`方法:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<input type="file" id="uploadFile">
<button id="uploadBtn">上传</button>
<ul id="filesList"></ul>
<a id="downloadLink" href="#">下载</a>
<script>
$(document).ready(function () {
$('#uploadBtn').click(function () {
var file = $('#uploadFile')[0].files[0];
$.ajax({
url: '/files/upload',
type: 'POST',
data: file,
processData: false,
contentType: false,
success: function (response) {
alert('文件上传成功');
},
error: function (err) {
console.error(err);
}
});
});
// 下载逻辑
// ...
});
</script>
</body>
</html>
```
以上代码创建了一个文件输入字段和上传按钮,当点击上传按钮时,它会触发AJAX请求将文件上传到服务器。下载链接的实现可以根据实际需求添加,通常会通过AJAX获取文件列表,然后在用户点击时触发下载。
总结来说,Spring Boot文件上传和下载涉及到的主要知识点有:
1. 配置`application.properties`以启用multipart上传并设置文件大小限制。
2. 创建Controller处理文件上传和下载的HTTP请求,使用`@RequestParam`和`@PathVariable`注解接收参数。
3. 使用MultipartFile处理上传的文件,将其保存到服务器。
4. 设置响应头以指示浏览器下载文件。
5. 构建前端界面与后端API交互,实现文件的上传和下载功能。
通过这些步骤,你可以构建出一个完整的Spring Boot应用,实现文件的上传和下载功能。在实际开发中,还需要考虑错误处理、安全控制(如防止文件覆盖、非法文件上传等)以及性能优化等问题。
2021-05-15 上传
129 浏览量
2024-11-01 上传
2024-11-01 上传
2024-11-01 上传
weixin_38701952
- 粉丝: 5
- 资源: 977
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程