请解释如何在 Express 中下载文件?

推荐答案

在 Express 中下载文件可以通过 res.download() 方法实现。该方法会将文件作为附件发送给客户端,并触发浏览器的下载行为。

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------
----- ---- - ----------------

-------------------- ----- ---- -- -
  ----- -------- - -------------------- -------- ---------------
  ---------------------- ---------------------- ----- -- -
    -- ----- -
      ------------------------ -----
      -------------------------------
    -
  ---
---

---------------- -- -- -
  ------------------- ------------------------
---

本题详细解读

res.download() 方法

res.download() 是 Express 提供的一个便捷方法,用于将文件作为附件发送给客户端。它接受三个参数:

  1. 文件路径:要下载的文件的绝对路径。
  2. 可选的文件名:客户端下载文件时使用的文件名。如果不提供,Express 会使用文件路径中的文件名。
  3. 回调函数:文件下载完成后执行的回调函数,通常用于处理错误或执行其他操作。

示例代码解析

  • 文件路径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() 方法,可以轻松实现文件下载功能,并且可以根据需要自定义文件名和处理下载过程中的错误。

纠错
反馈