简单的文件上传功能的实现
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()保存。 - 配置文件大小限制,增强安全防护。