在 Web 开发中,文件上传功能是一个非常常见的需求。Multer 是个在 Node.js 中处理 multipart/form-data 类型数据的中间件,使用它可以非常简单地实现文件上传功能。本文将介绍如何在 Fastify 中使用 Multer 进行文件上传。
安装 Multer
在使用 Multer 进行文件上传前,首先需要安装 Multer 和 Fastify。
使用 npm 安装 Multer 和 Fastify:
npm install --save multer fastify
上传单个文件
使用 Multer 进行文件上传非常简单,只需在 Fastify 实例中注册 Multer 中间件并进行配置。以下示例代码演示如何上传单个文件:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ------ - ----------------- -- -- ------ ----- ------ - -------- ----- ---------- -- -- -- ------ --- ------------------------------ ----- ------ ----- -- - ------ -- -- -------- ----------------------- ----- ------ -- - ----- ---- - ------------ -- ---------- ----------------- --------------------- -- -------------------- --- -- - -- ----- - ------------------ --------------- - ------------------- --------- -- ---- --------- --
在上述示例代码中,multer({ dest: 'uploads/' })
表示文件上传后保存到 uploads
目录中。upload.any()
表示允许上传任意类型的文件,也可以使用 upload.single('file')
表示上传单个名为 file
的文件。
req.files
是 Multer 上传的文件数组,我们可以通过 req.files[0]
获取第一个上传的文件对象。文件对象中包含了上传的一些元信息和文件在服务器上的路径。
上传多个文件
如果需要上传多个文件,只需将 upload.any()
更改为 upload.array('files', 3)
,其中 files
是文件的字段名,3
是最大上传数量。以下示例代码演示如何上传多个文件:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ------ - ----------------- -- -- ------ ----- ------ - -------- ----- ---------- -- -- -- ------ --- -------------------------------------- --- ----- ------ ----- -- - ------ -- -- -------- ----------------------- ----- ------ -- - ----- ----- - --------- -- --------- ------------------ --------------------- -- -------------------- --- -- - -- ----- - ------------------ --------------- - ------------------- --------- -- ---- --------- --
在上述示例代码中,upload.array('files', 3)
表示上传名为 files
的多个文件,最多上传 3 个文件。
限制文件类型和大小
Multer 允许我们限制上传文件的类型和大小。以下示例代码演示如何限制上传的文件类型和大小:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ------ - ----------------- -- -- ------ ----- ------ - -------- ----- ----------- ------- - --------- ---- - ----- -- --- -- ----------- ----- ----- --- -- - ----- ------------ - -------------- ------------ -- -------------------------------------- - -------- ----- - ---- - ------ -------------- ---- ----- ---- ---- --- --- ----- --- ----------- - - -- -- -- ------ --- ----------------------------------------- ----- ------ ----- -- - ------ -- -- -------- ----------------------- ----- ------ -- - ----- ---- - -------- -- --------- ----------------- --------------------- -- -------------------- --- -- - -- ----- - ------------------ --------------- - ------------------- --------- -- ---- --------- --
在上述示例代码中,upload
对象中的 limits
属性用于限制文件大小为 1MB。fileFilter
函数用于限制文件类型为 JPEG 和 PNG。如果上传的文件类型不在允许的类型范围内,会抛出 Invalid file type. Only JPEG and PNG files are allowed.
错误。
总结
在 Fastify 中使用 Multer 进行文件上传非常简单,我们只需注册 Multer 中间件并进行配置即可。通过限制文件类型和大小,我们可以确保上传的文件安全且符合要求。
希望本文能够对你有所帮助,谢谢阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646c6f55968c7c53b0b68a1e