Express.js 中使用 multers3 存储上传的文件

阅读时长 6 分钟读完

在前端开发过程中,上传文件是很常见的需求。而 Express.js 是一个流行的 Node.js Web 应用程序框架,提供了一些工具来使文件上传变得容易。在这篇文章中,我们将会学习如何使用 multers3 存储上传的文件,multers3 是一个上传文件的 npm 模块,可以保存文件到 Amazon S3。

准备工作

在开始前,你需要先安装 Node.js 和 Express.js,以及两个 npm 模块:multer 和 multer-s3。multer 是一个处理 multipart/form-data 格式数据的中间件。multer-s3 则是将上传文件保存到 Amazon S3 的适配器,需要提供 AWS 访问凭证和 S3 存储桶名称。

上传单个文件

首先,我们来看看如何上传一个单一的文件到 Amazon S3。假设你已经有一个包含上传文件表单的 HTML 页面,类似于以下代码:

接下来,我们将在 Express.js 应用程序中处理这个上传请求。在路由中,我们要使用 multer 中间件来处理 multipart/form-data 格式数据。multer 可以处理多个上传文件,但我们只需要处理一个文件,因此,我们将文件限制为 maximum count 为 1。然后,我们将用 multer-s3 存储上传的文件到 Amazon S3。

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

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

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

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

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

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

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

代码中主要部分是 multer 和 multer-s3 的配置。multer 中间件使用 upload.single('file') 方法来限制只有一个文件被上传,并且文件的字段名称为 "file"。multer-s3 中间件则将文件存储到 Amazon S3 中,同时设置了 ACL 和元数据,并且使用时间戳作为文件名。

在上传图像之后,我们可以在控制台上看到文件的 URL 来确认文件是否存储在 S3 上。这里的重点是要确保你的 AWS 访问凭证已正确设置。

上传多个文件

如果你需要上传多个文件,你可以使用 multer 的 array()fields() 方法。

array(fieldname [, maxCount]) 方法用于限制一个字段上传多个文件。fields(fields) 方法用于限制多个字段上传多个文件。

下面是例子代码:

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

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

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

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

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

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

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

此代码使用 array('files') 限制 upload 一个字段上传多个文件。在上传文件之后,我们也可以在控制台看到多个文件的 URL。

结论

这篇文章介绍了如何使用 Express.js 中的 multers3 存储上传的文件。我们首先需要准备 Node.js 和 Express.js 环境,然后安装必要的 npm 包。然后,我们学习了如何上传单个文件和多个文件,并将它们存储在 Amazon S3 中。

上传文件的工作需要特殊处理。在使用 AWS 的情况下,你需要确保你的 AWS 访问凭证已正确设置,并且你的 S3 存储桶名称和区域是正确的。通过学习这些知识,你可以更好地处理文件上传,并将它们存储在 Amazon S3 上,使你的 Web 应用程序更加健壮。

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

纠错
反馈