怎么用springboot实现一个web的文件上传和下载功能
时间: 2024-04-03 16:36:17 浏览: 67
可以按照以下步骤使用 Spring Boot 实现一个基本的 Web 文件上传和下载功能:
1. 添加依赖:在 pom.xml 中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
```
2. 配置上传和下载路径:在 application.properties 文件中添加以下配置:
```properties
#上传路径
spring.servlet.multipart.location=your_upload_folder_path
#下载路径
file.download.path=your_download_folder_path
```
3. 编写上传文件的 HTML 页面:在 resources/templates 文件夹下创建一个 upload.html 文件,内容如下:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<br/>
<button type="submit">上传</button>
</form>
</body>
</html>
```
4. 编写上传文件的 Controller:创建一个 UploadController 类,添加以下代码:
```java
@Controller
public class UploadController {
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
// 获取上传文件的名称
String fileName = file.getOriginalFilename();
// 获取上传文件的路径
String filePath = System.getProperty("user.dir") + File.separator + "upload" + File.separator + fileName;
// 将上传文件保存到指定路径
file.transferTo(new File(filePath));
return "redirect:/";
}
}
```
5. 编写下载文件的 Controller:创建一个 DownloadController 类,添加以下代码:
```java
@Controller
public class DownloadController {
@GetMapping("/download/{fileName}")
public ResponseEntity<Resource> download(@PathVariable String fileName, HttpServletRequest request) throws IOException {
// 获取下载文件的路径
String filePath = request.getServletContext().getRealPath("/") + "download/" + fileName;
// 创建文件对象
File file = new File(filePath);
// 创建 Resource 对象
Resource resource = new UrlResource(file.toURI());
// 设置 Content-Type
String contentType = request.getServletContext().getMimeType(resource.getFile().getAbsolutePath());
// 如果 Content-Type 无法确定,则设置为 application/octet-stream
if (contentType == null) {
contentType = "application/octet-stream";
}
// 返回下载文件的 ResponseEntity
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
.body(resource);
}
}
```
6. 在主类中添加配置:创建一个 MainApplication 类,添加以下代码:
```java
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setMaxUploadSize(10485760);
resolver.setDefaultEncoding("UTF-8");
return resolver;
}
}
```
7. 启动应用:运行 MainApplication 类的 main() 方法,然后在浏览器中访问 http://localhost:8080/upload 页面即可上传文件,访问 http://localhost:8080/download/{fileName} 即可下载指定的文件。
以上就是使用 Spring Boot 实现一个基本的 Web 文件上传和下载功能的步骤。
阅读全文