推荐答案
在 Express 中下载文件可以通过 res.download()
方法实现。该方法会将文件作为附件发送给客户端,并触发浏览器的下载行为。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ----- ---- - ---------------- -------------------- ----- ---- -- - ----- -------- - -------------------- -------- --------------- ---------------------- ---------------------- ----- -- - -- ----- - ------------------------ ----- ------------------------------- - --- --- ---------------- -- -- - ------------------- ------------------------ ---
本题详细解读
res.download()
方法
res.download()
是 Express 提供的一个便捷方法,用于将文件作为附件发送给客户端。它接受三个参数:
- 文件路径:要下载的文件的绝对路径。
- 可选的文件名:客户端下载文件时使用的文件名。如果不提供,Express 会使用文件路径中的文件名。
- 回调函数:文件下载完成后执行的回调函数,通常用于处理错误或执行其他操作。
示例代码解析
- 文件路径:
path.join(__dirname, 'files', 'example.pdf')
用于构建文件的绝对路径。__dirname
是当前模块文件所在的目录路径。 - 自定义文件名:
'custom-filename.pdf'
是客户端下载文件时使用的文件名。如果不提供这个参数,客户端将使用example.pdf
作为文件名。 - 错误处理:在回调函数中,如果文件下载失败,会输出错误信息并返回 500 状态码。
其他注意事项
- 文件路径安全性:确保文件路径是安全的,避免路径遍历攻击。可以使用
path.resolve()
或path.join()
来构建安全的路径。 - MIME 类型:Express 会自动根据文件扩展名设置正确的 MIME 类型。如果需要手动设置,可以使用
res.setHeader('Content-Type', 'application/pdf')
。
通过 res.download()
方法,可以轻松实现文件下载功能,并且可以根据需要自定义文件名和处理下载过程中的错误。