SuperAPI AI 工具集

nestjs-file-uploads

通用与其它

查看项目

更新于 10-15 22:13

技能介绍

用途:在 NestJS 中实现安全、可扩展的文件上传,覆盖校验、流式传输与异步处理。

主要能力与要点:

  1. 校验(P0 关键):绝不信任 content-type 请求头或文件扩展名,使用 file-type 或 mmmagic 校验真实缓冲区签名(魔数)。在 Multer 配置中设置严格限制,例如 { fileSize: 5000000 }(5MB),防止 DoS。
  2. 流式与可扩展性:默认 Multer MemoryStorage 遇到大文件会导致服务器崩溃;任何大于 10MB 的文件应使用流式方案。可用 multer-s3 直接上传到存储桶,或用 busboy 处理原始流。推荐架构:客户端向 API 请求签名 URL,再直接上传到 S3/GCS,完全绕过 API 服务器,这是无限扩展上传的唯一方式。
  3. 处理:不要在 HTTP 请求内处理图片或视频。流程为上传文件、向队列(BullMQ)推送 FileUploadedEvent、由 worker 下载并缩放/转换后重新上传。

反模式:不信任 content-type,始终校验魔数,MIME 头可被伪造;大文件不用 MemoryStorage,超过 10MB 用流式或签名 URL;不做同步文件处理,通过 FileUploadedEvent 交给 BullMQ worker。

适用场景:NestJS 后端需要安全接收文件、限制体积、直传对象存储或异步处理媒体资源的项目。

限制:资料未提供具体安装命令、依赖版本、完整代码示例与配置细节,需结合官方文档自行实现。