Node.js 中的 Multer

2025年2月27日 | 阅读 4 分钟

Multer 是 Node.js 中间件,用于通过 multipart/form-data 接收文件上传。它建立在 Busboy 之上,Busboy 是一个 node.js 模块,可高效处理请求中的传入 HTML 表单数据。Multer 类似于 Node.js 中的 body-parser(一个 express 中间件),但它只接受 multipart 数据:这样做是为了提高效率和最大化性能,因为它独特的关注点以及处理信息的方式。Application/x-www-form-urlencoded 是当创建 HTML 表单时 ENCTYPE 属性的默认值。此属性指定表单中的数据应如何编码并与请求一起发送。由于其类型结构,文件上传操作默认不支持键值对编码数据。Multipart 消息由两部分组成,一个文本输入和一个文件输入,每一部分代表我们表单中的一个字段。Multipart/form-data content-type 指示浏览器如何以这种方式编码表单数据。许多人使用 Multer 是因为它简单、高效且能够一次上传多个文件。它添加了一个 body 对象,其中包含来自 HTML 表单文本字段的数据。文件或文件对象包含通过表单上传的文件。

Multer 的特性

Multer 的一些特性如下:

  • 易于集成: Multer 可以与 Express.js 无缝集成。
  • 文件管理: 它允许单文件和多文件上传。
  • 内存和磁盘存储引擎: 它允许文件存储在内存中或磁盘上。
  • 可定制: 它允许我们创建自己的存储引擎并配置文件大小限制、文件过滤器和其他功能。
  • 文件过滤: 它允许我们在保存文件之前根据 MIME 类型或其他标准过滤文件。

安装

示例

让我们举一个例子来说明 Node.js 中的 Multer。

步骤 1

创建一个目录

步骤 2

安装必要的依赖项

步骤 3

目录结构

现在,完成以上所有步骤后,我们需要使用 node.js 实现代码。

步骤 4

代码实现

输出

 
Command: node index.js
Server started on https://:3000   

说明

  • 在此示例中,我们需要 express、multer 和 path 模块。
  • 之后,Multer 设置为将文件保存在 uploads/ 目录中,并使用原始字段名和时间戳。
  • 文件过滤器函数确保只上传图像文件。
  • 单文件上传端点: /upload URL 允许我们上传单个文件。
  • 多文件上传端点: /upload-multiple 可以处理多文件上传。
  • HTML 表单: 这些是用于测试文件上传的基本表单。

结论

总之,Multer 并非普通的中间件。它的灵活性使其能够与 Node.js 框架中的文件上传协同工作。此外,它还可以轻松地从客户端接收文件并将其保存在内存或磁盘上。Multer 变得有用是因为它为使用 Express 应用程序的开发人员提供了一种简单的方式来处理文件上传。给出的示例展示了如何将 Multer 集成到 Express.js 应用程序中,以创建完美的assment 文件上传管理系统。通过 Multer 集成,开发人员可以通过将文件存储在磁盘上或利用可定制的引擎将其存储在内存中来轻松处理一个或多个上传。通过在配置期间删除非图像文件,安全性得到了增强(可用性也得到了提高)。此外,该示例还展示了如何创建易于使用的 HTML 界面,在测试上传的文件时显示成功和失败场景。Multer essentially streamlines the management of multipart/form-data requests in Node.js environments, enhancing file upload efficiency without sacrificing security. 本文支持 Multer 作为希望拥有安全方法在此上下文中完美处理文件上传的开发人员的理想选择。