在 Fastify 中处理文件上传

阅读时长 4 分钟读完

Fastify 是一个快速、低开销和易于学习的 Web 框架,其性能排名领先。在开发过程中,我们经常需要处理文件上传。本文将介绍如何在 Fastify 中处理文件上传。

安装 Multer

Multer 是一个 Node.js 中间件,用于处理文件上传,并支持多文件上传。我们需要在 Fastify 中安装 Multer。

处理文件上传

处理文件上传需要在路由中添加 Multer 中间件,并使用 single 函数指定文件上传的字段名。以下示例代码演示了如何上传单个文件。

在 Multer 中,我们指定了上传文件的目标目录 dest,和上传文件的字段名 'file'。中间件将文件保存到上传文件夹中,然后将文件信息添加到请求的 file 对象中,并将控制权传递给路由处理程序。

在路由处理程序中,我们可以访问请求的文件信息,例如文件名、路径和大小。在控制台中打印文件信息,然后使用 Fastify 的 reply.send() 方法发送成功响应。

多文件上传

如果需要上传多个文件,Multer 提供了 arrayfields 函数。以下示例代码演示了如何上传多个文件。

在这个示例中,我们使用了 array 函数指定了上传文件的字段名 files 和最大数量为 2。此外,我们还可以使用 fields 函数指定多个文件上传字段和数量的限制。

限制文件大小和类型

Multer 还提供了一些选项,可以限制上传文件的大小和类型。以下示例代码演示了如何限制上传文件的大小和类型。

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

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

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

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

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

在这个示例中,我们使用了 diskStorage 函数指定了文件的保存目录和文件名。我们还使用了 fileFilter 函数,该函数可以根据文件类型过滤上传的文件,并抛出一个异常。

在 Multer 中,我们可以使用 limits 选项来指定上传文件的大小限制。在这个示例中,我们将文件大小限制为 1 MB。

结论

本文介绍了如何在 Fastify 中处理文件上传。我们使用了 Multer 中间件,演示了单个文件和多个文件上传的示例代码,并介绍了如何限制上传文件的大小和类型。Multer 的丰富选项可以使我们轻松处理任何类型的文件上传需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f7c74bc5c563ced5aa67a7

纠错
反馈