Express.js 中使用中间件 multer 实现文件上传的最佳实践

阅读时长 4 分钟读完

前言

在 Web 应用中,文件上传是非常常见的一项功能。在 Node.js 的 Web 应用开发中,我们可以使用 Express.js 来实现文件上传功能,而 multer 就是 Express.js 中用于处理文件上传的中间件。本文将详细介绍如何使用 multer 实现文件上传的功能,并给出一些使用的最佳实践。

安装 multer

使用 npm 命令安装 multer:

使用 multer 处理文件上传

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

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

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

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

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

上面的代码中,使用 multer 的 diskStorage 配置选项定义上传的文件存储方式,destination 用于定义存储的路径,filename 则用于定义存储时的文件名。使用 multer({ storage: storage }) 来定义 multer 中间件。

将文件上传处理的中间件绑定到路由 /upload 上,使用 upload.single('file') 单个上传,file 为上传的文件字段名。

在文件上传处理的中间件中,通过 req.file 来获取上传的文件信息,如果上传失败则返回 400 状态码和错误信息。

进一步优化

控制上传文件类型

可以通过 fileFilter 来控制上传文件的类型。例如,只允许上传图片类型的文件:

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

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

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

控制上传文件大小

默认情况下,multer 没有文件大小限制。可以通过添加 limits 选项来限制上传文件的大小,例如:

注意:在客户端上传文件前,应该先判断文件的大小是否符合要求,避免上传过大的文件。

总结

multer 是 Express.js 中用于处理文件上传的中间件,实现文件上传功能非常简单。代码实现时,需要注意一些最佳实践,如控制上传文件类型和大小等。通过本文的介绍,相信读者已经能够掌握 multer 的使用。

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

纠错
反馈