如何在 Express.js 中使用 Multer 处理文件上传

阅读时长 5 分钟读完

随着前端应用越来越复杂,文件上传变得越来越普遍。Multer 是一个 Node.js 中间件,它可以帮助我们在 Express.js 框架中轻松处理文件上传。本文将介绍如何在 Express.js 中使用 Multer 处理文件上传,包括详细的步骤和示例代码。

Multer 是什么?

Multer 是一个 Node.js 中间件,他可以帮助我们处理 HTTP 请求中的 multipart/form-data 数据,也就是说,它可以让我们在表单中上传文件。Multer 是一个基于 busboy 的模块,可以同时处理多个文件上传,支持文件大小限制,安全处理以及非常方便的文件命名和存储路径。

安装和配置 Multer

在开始使用 Multer 之前,我们需要安装和配置它。首先在我们的项目中安装 Multer:

接下来,在我们的 Express.js 应用中引入 Multer 并配置:

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

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

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

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

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

如上代码,我们需要使用 multer() 函数来创建一个 Multer 实例,其中对象选项 dest 指定了文件的存储路径。然后我们使用 upload.single() 方法来处理单个上传的文件,并指定上传文件的 name 属性为 file。在文件上传成功后,会调用回调函数并可以使用 req.file 来获取文件信息。

Multer 对象选项

除了 dest 选项,Multer 还支持其他一些配置选项,包括:

  • dest - 文件存储路径
  • fileFilter - 文件过滤器,可以排除某些文件
  • limits - 文件大小限制
  • storage - 文件存储器,可以改变文件存储的方式

实现文件上传

使用 Multer 处理文件上传非常简单,只需使用 upload.single() 方法即可处理单个上传的文件。如果要处理多个上传的文件,可以使用 upload.array()upload.fields() 方法来处理。

处理单个文件上传

下面是一个处理单个文件上传的示例代码:

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

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

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

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

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

处理多个文件上传

下面是一个处理多个文件上传的示例代码:

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

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

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

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

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

如上代码,我们使用 upload.array() 方法来处理多个上传的文件,并指定上传文件的 name 属性为 files。第二个参数 10 表示最多可以上传 10 个文件。

Multer 文件信息

在处理文件上传时,我们可以使用 req.filereq.files 来获取文件信息。它们包含以下属性:

  • fieldname - 表单字段名
  • originalname - 文件原始名称
  • encoding - 文件编码格式
  • mimetype - 文件 MIME 类型
  • size - 文件大小
  • destination - 文件存储路径
  • filename - 文件名
  • path - 文件完整路径

总结

在本文中,我们介绍了 Multer 的基本概念和用法,并提供了详细的示例代码。Multer 是一个非常强大的 Node.js 中间件,可以帮助我们轻松地处理文件上传,让我们开发更加高效和便捷。如果你还没有使用过 Multer,现在就开始试试吧!

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

纠错
反馈