Express.js 中间件 Multer 的使用方法

阅读时长 5 分钟读完

在基于 Node.js 的 Web 开发中,使用 Express 是一个常见的选择。然而,在处理文件上传时,Express 并没有提供内置的解决方案。这时就需要使用一些额外的模块库,而 Multer 就是其中值得一提的一个中间件。

Multer 是基于 Node.js 平台的一个用于处理 FormData 形式的表单数据,特别是文件上传的中间件。Multer 可以将上传的文件存储到指定位置,并在 Express 请求对象中增加一个 files 或者 file 属性来访问这些文件。

安装

在使用 Multer 之前,需要先安装该模块。可以使用 npm 来进行安装。

基本用法

使用 Multer 非常简单,只需要在文件上传路由处理函数之前,加入 multer 中间件,并使用 any() 获取所有上传的文件即可。

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

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

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

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

在上述代码中,Multer 中间件使用的是 dest 配置,该配置指定了上传文件的保存目录,所有上传的文件都会保存到该目录中。upload.any() 则表示接收所有上传的文件。

需要注意的是,被上传的文件会被存储在 req.files 中,在处理完上传之后需要向客户端进行回应,否则客户端会一直处于等待状态。

文件名与路径

在上传的过程中,可以通过 storage 配置项来定义文件名和文件路径。下面的代码演示了如何将上传的文件重命名为原始文件名:

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

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

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

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

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

该代码中通过 storage 配置项来定义了文件的存储位置和文件名。存储位置使用的是 destination 选项,而文件名使用的是 filename 选项。在上述示例中,filename 选项采用的是上传的原始文件名。

限制

在处理文件上传时,通常需要控制上传文件的大小、类型等。Multer 提供了一系列的选项来控制文件上传行为,其中 limits 配置项用于限制上传文件的大小。下面的代码限制上传文件的大小为 1MB:

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

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

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

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

需要注意的是,上述代码设置的是单个文件的大小限制,如果需要限制上传文件的数量,需要使用 array 或者 fields 选项。

总结

在实际的 Web 开发过程中,文件上传是非常常见的需求,而 Multer 提供了非常方便的解决方案。本文主要介绍了 Multer 的基本用法,涵盖了文件上传、文件名和路径、上传限制等多个方面。希望这篇文章能够对初学者起到一定的指导意义。

示例代码:https://github.com/luojinyong/express-file-upload

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

纠错
反馈