简单的文件上传功能的实现
1. 概述
文件上传功能允许用户将本地文件(如图片、视频、音频)传输到服务器,常见于微博、微信朋友圈等场景。实现需结合前端表单和后端接口处理。
2. 实现步骤
2.1 前端表单
使用<form>
标签提交数据,要注意的三要素:
enctype="multipart/form-data"
以支持文件传输。method类型
必须为POST
。- 需要有一个
<input type="file" name="file">
,才能上传文件。
|
|
2.2 后端控制器(Spring Boot)
通过@PostMapping
接收文件,使用MultipartFile
处理上传内容。
|
|
这段代码实现了一个基于Spring Boot的文件上传功能,下面我将讲解其中的关键知识点:
@RestController
注解
- 这是一个组合注解,相当于
@Controller
+@ResponseBody
- 表示这个类是一个RESTful风格的控制器,所有方法的返回值都会自动转换为JSON格式
@PostMapping
注解
- 用于映射HTTP POST请求到特定的处理方法
- 这里指定了路径为"/upload",表示处理上传到该路径的POST请求
文件上传参数
MultipartFile
是Spring提供的接口,用于处理文件上传- 可以获取文件名(
getOriginalFilename()
)、文件内容、大小等信息 - 文件上传时,表单的
enctype
必须设置为multipart/form-data
文件处理流程
- 获取原始文件名:
file.getOriginalFilename()
- 提取文件扩展名:通过
lastIndexOf(".")
找到最后一个点,然后截取后缀 - 生成新文件名:使用
UUID.randomUUID()
生成唯一ID,避免文件名冲突 - 保存文件:
transferTo()
方法将文件保存到指定路径
文件存储路径
- 代码中使用的是绝对路径
C:\Users\LENOVO\Desktop\杂项\images\
3. 核心知识点
3.1 文件存储方法
- 获取文件名:
multipartFile.getOriginalFilename()
- 保存到本地:
multipartFile.transferTo(File dest)
3.2 文件大小限制配置
默认限制为 1MB,超出需在配置文件中调整:
|
|
4. 注意事项
-
文件大小限制
默认配置可能导致大文件上传失败,需根据需求调整application.yml
。 -
安全性
- 校验文件类型,防止恶意文件上传(如
.exe
)。 - 限制上传目录权限,避免非法访问。
- 校验文件类型,防止恶意文件上传(如
-
异常处理
捕获IOException
或SizeLimitExceededException
,返回友好提示。 -
文件名冲突
建议对上传文件重命名(如UUID),避免覆盖已有文件。
5. 总结
- 前端表单需设置
enctype="multipart/form-data"
。 - 后端通过
MultipartFile
接收文件,使用transferTo()
保存。 - 配置文件大小限制,增强安全防护。