在 web 应用程序中,上传文件是一项非常基本的功能。在 Express.js 中,我们可以使用官方插件或第三方库来实现上传文件的功能。在本篇文章中,我们将会介绍如何使用 multer 库来在 Express 应用程序中实现文件上传功能。
Multer 指南
Multer 是一个 Node.js 中间件,用于处理 multipart/form-data
类型文件的数据。它可以在 Express 中轻松处理文件上传,同时还能提供许多可定制的选项。Multer 主要用于解析数据并把数据储存到指定的目录。
安装 Multer
要使用 Multer,首先需要在项目中安装该包。可以使用 npm 或 yarn 进行安装。
npm install multer # 或 yarn add multer
Multer 基础用法
要使用 Multer 处理文件上传,需要在 Express 中配置 multer 中间件。要通过表单提交文件,请使用 <input type="file">
标签。当上传表单被提交时,Multer 将会处理请求并把数据保存到指定的目录中。
让我们看一个简单的示例,其中上传文件将会保存到 uploads 目录中:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ----------------- ----- --- - --------- ----- ------ - -------- ----- ---------- -- ------------------- ---------------------- ----- ---- -- - ------------------- -- ---------------- -- -- - --------------------- --
在上面的示例中,我们创建了一个 express 应用程序,然后使用 Multer 配置中间件来处理文件上传。
注意 upload.single()
方法中的参数,这里参数的名称是表单中的文件字段名称。在这种情况下,我们使用的是 <input type="file" name="file">
标签,因此参数名称为 file
。
Multer 高级选项
Multer 提供了许多可定制的选项,以便我们根据自己的需求进行配置。在下面的示例中,我们将会使用一些常用的高级选项:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ----------------- ----- --- - --------- -- -- ------ --- ----- ------ - -------- -------- -------------------- ------------ -------- ----- ----- --- - -------- ----------- -- --------- -------- ----- ----- --- - -------- ------------------ - --- ----------- -------- ----- ----- --- - -- ----- --- - --- ----- -- -------------- --- ------------ -- ------------- --- ------------ - ------ ------ ------------ --- - --- -------- - -------- ----- - -- ------------------- ---------------------- ----- ---- -- - ------------------- -- ---------------- -- -- - --------------------- --
在上述示例中,我们调整了 Multer 的高级选项。我们使用了磁盘存储引擎来配置我们之前创建的 uploads 文件夹。此外,我们还设置了文件名选项,用于为每个上传的文件设置唯一的文件名。
我们还使用了 fileFilter
选项,该选项用于限制用户可以上传的文件类型。在这种情况下,我们只允许上传 image/jpeg
和 image/png
格式的文件。如果一个不支持的文件类型上传了,就会返回一个错误给用户。
结论
在本篇文章中,我们介绍了如何使用 Multer 在 Express.js 中上传文件。我们展示了 Multer 的基础用法以及一些高级选项,以便您可以根据自己的需求进行配置。Multer 是 Node.js 中使用文件上传的最佳选择之一,我们强烈建议您将其添加到您的 Express.js 应用程序中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675148a78bd460d3ad881028