编写一个基于SpringBoot的前后端实现上传文件功能的代码并解释
时间: 2023-06-11 10:09:33 浏览: 58
首先,我们需要在前端页面添加一个上传文件的表单,代码如下:
```html
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
```
其中,`enctype="multipart/form-data"`是必须的,因为我们要上传二进制数据。
接着,在后端代码中,我们需要编写一个Controller来处理文件上传请求,代码如下:
```java
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
// 获取上传文件的原始文件名
String originalFilename = file.getOriginalFilename();
// 获取上传文件的字节数组
byte[] bytes = file.getBytes();
// 将字节数组写入到磁盘文件中
Files.write(Paths.get("uploads/" + originalFilename), bytes);
return "文件上传成功!";
}
}
```
上面的代码中,我们使用了`@RequestParam`注解来获取上传的文件,使用了`MultipartFile`类型来表示上传的文件。在`uploadFile`方法中,我们可以获取上传文件的原始文件名和字节数组,然后将字节数组写入到磁盘文件中。
最后,我们需要在`application.properties`文件中配置上传文件的临时存储路径,代码如下:
```properties
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200KB
spring.servlet.multipart.max-request-size=215KB
spring.servlet.multipart.location=uploads/
```
其中,`spring.servlet.multipart.enabled`设置为`true`表示启用文件上传功能,`spring.servlet.multipart.file-size-threshold`表示文件大小的阈值,如果文件大小小于等于该值,则文件将存储在内存中,否则将存储在磁盘上。`spring.servlet.multipart.max-file-size`表示上传文件的最大大小,`spring.servlet.multipart.max-request-size`表示请求的最大大小,`spring.servlet.multipart.location`表示上传文件的存储路径。
完整的代码如下:
```java
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
// 获取上传文件的原始文件名
String originalFilename = file.getOriginalFilename();
// 获取上传文件的字节数组
byte[] bytes = file.getBytes();
// 将字节数组写入到磁盘文件中
Files.write(Paths.get("uploads/" + originalFilename), bytes);
return "文件上传成功!";
}
}
```
```html
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
```
```properties
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200KB
spring.servlet.multipart.max-request-size=215KB
spring.servlet.multipart.location=uploads/
```