文件上传功能
一句话:让用户能把本地文件(图片、文档等)传到服务器/云存储的功能,需要考虑大小限制、类型校验、存储位置等问题。
它是什么
文件上传看似简单,实际要处理不少细节:文件存在哪(服务器本地还是云存储)、限制多大/什么类型、上传失败怎么重试、大文件要不要分片上传、以及最重要的——防止有人上传恶意文件。
适合干什么
- 用户头像/图片上传功能
- 文档/资料上传处理
- 需要支持较大文件的上传场景
不适合干什么
- 完全不涉及用户上传内容的纯展示型网站
普通人怎么用
小文件(几MB以内)可以直接上传到服务器或云存储服务;一定要在服务端校验文件类型和大小(不能只信任前端的校验,容易被绕过),常见的做法是限制文件扩展名和实际文件内容类型。
进阶用户怎么用
大文件建议用分片上传+断点续传,避免网络中断导致整个文件重传;上传的文件建议存到专门的对象存储服务(而不是服务器本地磁盘),方便扩展和CDN加速访问;重要场景要做病毒/恶意文件扫描。
常见误区
- 只在前端限制文件类型和大小,服务端没有做校验,容易被绕过上传恶意文件或超大文件占用存储
- 把用户上传的文件直接存在服务器本地磁盘,服务器扩容/迁移时容易遇到麻烦,用云存储服务更灵活
和相似工具的区别
- 和object-storage的关系:文件上传功能通常最终会把文件存到对象存储服务里,两者是配套使用的关系
入门步骤
- 确定文件大小和类型限制
- 服务端做好类型和大小校验
- 选择存储位置(服务器本地或云存储)