前端/移动开发面试题更新 2026-08-05

在 Node.js 环境下,实现文件上传与下载的常见策略是什么?

前端/移动开发安全意识技术原理方案权衡Node.js

考察说明

考查 Node.js 中文件上传与下载的实现机制与要点。

回答思路

  1. 【回答框架 1】处理上传:使用 multer 等中间件解析 multipart/form-data 请求,它基于 busboy 将上传文件以流式写入磁盘或内存,需设置存储位置、文件大小限制、文件类型过滤,并在路由回调中获取文件信息和原始字段。
  2. 【回答框架 2】处理下载:使用 res.download 或通过流(如 fs.createReadStream)将文件内容输出,设置正确的 Content-Type 和 Content-Disposition(例如 attachment 或 inline)以触发浏览器下载或内联展示。
  3. 【回答框架 3】文件路径安全:应基于服务端生成的唯一文件名保存,避免使用用户提供的文件名,并校验文件类型与大小,防止路径遍历或恶意文件上传。
  4. 【回答框架 4】性能:大文件建议用流式处理避免内存溢出;下载大文件时采用流式发送并处理错误,可考虑支持断点续传(Range 请求)。
  5. 【关键点 1】multer 用于解析 multipart 数据,可配置存储目标和限制。
  6. 【关键点 2】使用 res.download 或创建读流来处理下载。
  7. 【关键点 3】必须对文件类型、大小和文件名进行校验,防止安全问题。
  8. 【关键点 4】采用流式处理以支持大文件。
  9. 【关键点 5】下载响应需设置合理的 Content-Disposition 头。
  10. 【易错点 1】忽略了文件大小限制可能导致内存耗尽。
  11. 【易错点 2】直接使用用户提供的文件名会造成路径遍历或覆盖风险。
  12. 【易错点 3】不处理下载流的错误可能挂起响应。