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

在 Express 框架中,有哪些方法可以实现文件下载,各有什么适用场景?

前端/移动开发风险判断技术原理ExpressNode.js

考察说明

考察对 Express 响应机制和文件下载实现方式的掌握程度。

回答思路

  1. 【回答框架 1】Express 中实现文件下载常见方式有几种。最简单的是使用 res.download() 方法,它会设置合适的 Content-Disposition 响应头,将文件作为附件发送给客户端,适合指定文件名和错误处理。
  2. 【回答框架 2】另一种方式是 res.sendFile(),它直接以流的方式发送文件内容,通常不设置 Content-Disposition,适合在浏览器中内联显示文件(如 PDF、图片),需要提供绝对路径并处理路径安全性。
  3. 【回答框架 3】如果需要更精细的控制,可以使用 res.send() 配合 Buffer 或 Stream,手动设置 Content-Type 和 Content-Disposition 等响应头,适用于动态生成的内容或者文件较大时的流式传输,但需要自行管理流错误和文件关闭。
  4. 【回答框架 4】对于大文件下载,推荐使用流式传输(如 pipe),避免一次性读取整个文件到内存中,减少内存占用。同时需要处理中断和错误,确保响应正确结束。
  5. 【回答框架 5】此外,需要注意路径安全性,防止目录遍历攻击。对于用户上传的文件,应存储在非公共目录,并限制访问权限。
  6. 【关键点 1】res.download() 适合附件下载,自动设置 Content-Disposition。
  7. 【关键点 2】res.sendFile() 适合内联显示,需要绝对路径。
  8. 【关键点 3】流式传输可以降低内存占用,适合大文件。
  9. 【关键点 4】必须处理文件不存在或权限错误。
  10. 【关键点 5】路径需要严格校验,防范目录遍历。
  11. 【易错点 1】直接拼接用户输入路径,可能导致目录遍历。
  12. 【易错点 2】未正确设置响应头导致文件名乱码或下载失败。
  13. 【易错点 3】大文件直接读入内存,造成内存压力。