在 Fastify 中使用 Multer 进行文件上传

阅读时长 6 分钟读完

在 Web 开发中,文件上传功能是一个非常常见的需求。Multer 是个在 Node.js 中处理 multipart/form-data 类型数据的中间件,使用它可以非常简单地实现文件上传功能。本文将介绍如何在 Fastify 中使用 Multer 进行文件上传。

安装 Multer

在使用 Multer 进行文件上传前,首先需要安装 Multer 和 Fastify。

使用 npm 安装 Multer 和 Fastify:

上传单个文件

使用 Multer 进行文件上传非常简单,只需在 Fastify 实例中注册 Multer 中间件并进行配置。以下示例代码演示如何上传单个文件:

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

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

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

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

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

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

在上述示例代码中,multer({ dest: 'uploads/' }) 表示文件上传后保存到 uploads 目录中。upload.any() 表示允许上传任意类型的文件,也可以使用 upload.single('file') 表示上传单个名为 file 的文件。

req.files 是 Multer 上传的文件数组,我们可以通过 req.files[0] 获取第一个上传的文件对象。文件对象中包含了上传的一些元信息和文件在服务器上的路径。

上传多个文件

如果需要上传多个文件,只需将 upload.any() 更改为 upload.array('files', 3),其中 files 是文件的字段名,3 是最大上传数量。以下示例代码演示如何上传多个文件:

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

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

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

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

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

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

在上述示例代码中,upload.array('files', 3) 表示上传名为 files 的多个文件,最多上传 3 个文件。

限制文件类型和大小

Multer 允许我们限制上传文件的类型和大小。以下示例代码演示如何限制上传的文件类型和大小:

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

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

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

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

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

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

在上述示例代码中,upload 对象中的 limits 属性用于限制文件大小为 1MB。fileFilter 函数用于限制文件类型为 JPEG 和 PNG。如果上传的文件类型不在允许的类型范围内,会抛出 Invalid file type. Only JPEG and PNG files are allowed. 错误。

总结

在 Fastify 中使用 Multer 进行文件上传非常简单,我们只需注册 Multer 中间件并进行配置即可。通过限制文件类型和大小,我们可以确保上传的文件安全且符合要求。

希望本文能够对你有所帮助,谢谢阅读!

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

纠错
反馈