处理 Express.js 应用程序的文件上传

阅读时长 6 分钟读完

随着 Web 应用程序的不断发展,文件上传已经成为了许多应用程序中必不可少的功能之一。在本文中,我们将探讨如何处理 Express.js 应用程序的文件上传。

什么是文件上传

文件上传是指用户将文件从本地计算机上传到服务器的过程。在 Web 应用程序中,常见的文件上传场景包括上传头像、上传图片、上传附件等。

使用 multer 处理文件上传

在 Express.js 中,我们可以使用 multer 中间件来处理文件上传。multer 是一个针对 express.js 的 node.js 中间件,负责处理 multipart/form-data 类型的表单数据,它能够处理多种类型的表单数据,包括文本数据、文件数据和图片数据等等。

要使用 multer,我们首先需要安装 multer:

然后,我们需要引入 multer 并配置它:

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

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

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

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

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

以上代码中,我们首先创建了一个 multer 的实例,然后使用该实例创建了一个中间件 upload。在 app.post 中,我们使用 upload.single 方法将上传的文件保存在磁盘上,并将文件信息保存在 req.file 中,然后进入处理文件上传逻辑的代码中。

文件上传的验证

在处理文件上传的逻辑中,我们可能需要对上传的文件进行验证,以确保上传的文件符合要求。multer 提供了一些方法,用于定义文件上传的验证规则:

fileFilter

fileFilter 方法负责定义文件上传的验证规则,可以拒绝某些文件的上传,也可以接受某些文件的上传。在 fileFilter 方法中,第一个参数是文件对象(req.file),第二个参数是一个回调函数,该回调函数接受两个参数:第一个参数是一个布尔值,用于确定文件是否上传,第二个参数是一个字符串,用于指定上传文件的错误信息。

例如,以下代码示例中,我们拒绝上传后缀为 .doc 和 .ppt 的文件:

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

limits

limits 方法用于限制上传文件的大小和数量。例如,以下代码示例中,我们设置上传文件的大小不超过 5mb,上传文件的数量不超过 10 个:

文件上传的完整示例

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

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

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

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

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

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

总结

在本文中,我们学习了如何使用 multer 处理 Express.js 应用程序的文件上传,并介绍了文件上传的验证和错误处理。希望本文能够对大家有所帮助。

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

纠错
反馈