文件上传
2025年12月30日大约 2 分钟
文件上传
文件上传即通过浏览器将本地的文件传输到服务器端进行保存的过程。文件上传通常用于用户提交图片、文档等文件到网站或应用程序。
- 前端页面上传三要素:
- 表单项
type="file":用于选择文件的输入框。 - 表单提交方式POST:文件上传必须使用POST方式提交表单。
- 表单编码类型
enctype="multipart/form-data":指定表单数据的编码类型为multipart/form-data,以支持文件上传。
- 表单项
- 服务端接收文件:
- 使用Spring的
MultipartFile类接收上传的文件。
- 使用Spring的
本地存储
指服务端接收上传的文件后,将文件保存到服务器的本地磁盘中。
- 需要使用Spring的
MultipartFile类接收上传的文件。 - 示例代码:
@PostMapping("/upload")
public Result uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
// 获取文件原始名称
String originalFilename = file.getOriginalFilename();
// 定义文件保存路径
String filePath = "./uploads/" + originalFilename;
// 保存文件到本地磁盘
file.transferTo(new File(filePath));
return Result.success("File uploaded successfully: " + originalFilename);
}如何解决上传文件重名问题?
使用UUID生成唯一文件名,避免文件覆盖。
UUID.randomUUID().toString()生成唯一标识符。
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
String uniqueFilename = UUID.randomUUID().toString() + suffix;
String filePath = "./uploads/" + uniqueFilename;
file.transferTo(new File(filePath));文件超过SpringBoot默认限制大小怎么办?
- SpringBoot默认上传文件大小限制为1MB,如果上传的文件超过该大小,会抛出异常。
- 解决方法:在
application.yml中配置上传文件大小限制max-file-size:单个文件的最大上传大小max-request-size:单次请求的最大上传大小
spring:
servlet:
multipart:
max-file-size: 5MB
max-request-size: 10MBMultipartFile常用方法
| 方法名 | 说明 |
|---|---|
| String getOriginalFilename() | 获取上传文件的原始名称 |
| void transferTo(File dest) | 将文件保存到指定位置 |
| long getSize() | 获取文件大小(字节) |
| byte[] getBytes() | 获取文件的字节数组 |
| InputStream getInputStream() | 获取文件的输入流 |
云存储
云存储是指将上传的文件保存到第三方云存储服务提供商的服务器上,而不是保存到本地磁盘中。