在前端开发过程中,上传文件是很常见的需求。而 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 页面,类似于以下代码:
<form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form>
接下来,我们将在 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