Fastify 是一个快速、低开销和易于学习的 Web 框架,其性能排名领先。在开发过程中,我们经常需要处理文件上传。本文将介绍如何在 Fastify 中处理文件上传。
安装 Multer
Multer 是一个 Node.js 中间件,用于处理文件上传,并支持多文件上传。我们需要在 Fastify 中安装 Multer。
npm install multer --save
处理文件上传
处理文件上传需要在路由中添加 Multer 中间件,并使用 single
函数指定文件上传的字段名。以下示例代码演示了如何上传单个文件。
const multer = require('multer'); const upload = multer({ dest: 'uploads/' }); fastify.post('/upload', upload.single('file'), async (request, reply) => { const file = request.file; console.log(file); reply.send('File uploaded'); });
在 Multer 中,我们指定了上传文件的目标目录 dest
,和上传文件的字段名 'file'
。中间件将文件保存到上传文件夹中,然后将文件信息添加到请求的 file
对象中,并将控制权传递给路由处理程序。
在路由处理程序中,我们可以访问请求的文件信息,例如文件名、路径和大小。在控制台中打印文件信息,然后使用 Fastify 的 reply.send()
方法发送成功响应。
多文件上传
如果需要上传多个文件,Multer 提供了 array
和 fields
函数。以下示例代码演示了如何上传多个文件。
const upload = multer({ dest: 'uploads/' }); fastify.post('/upload', upload.array('files', 2), async (request, reply) => { const files = request.files; console.log(files); reply.send('Files uploaded'); });
在这个示例中,我们使用了 array
函数指定了上传文件的字段名 files
和最大数量为 2
。此外,我们还可以使用 fields
函数指定多个文件上传字段和数量的限制。
限制文件大小和类型
Multer 还提供了一些选项,可以限制上传文件的大小和类型。以下示例代码演示了如何限制上传文件的大小和类型。
-- -------------------- ---- ------- ----- ------- - -------------------- ------------ ----- ----- --- -- - -------- ----------- -- --------- ----- ----- --- -- - -------- ------------------ - --- ----- ---------- - ----- ----- --- -- - ----- ------------ - -------------- ------------ ------------- -- --------------------------------------- - ----- ----- - --- ------------ ---- ------- ---------- - ------------------- ------ --------- ------- - -------- ------ -- ----- ------ - -------- -------- -------- ------- - --------- ------- -- - -- -- ----------- ---------- --- ----------------------- ---------------------- ----- --------- ------ -- - ----- ---- - ------------- ------------------ ---------------- ----------- ---
在这个示例中,我们使用了 diskStorage
函数指定了文件的保存目录和文件名。我们还使用了 fileFilter
函数,该函数可以根据文件类型过滤上传的文件,并抛出一个异常。
在 Multer 中,我们可以使用 limits
选项来指定上传文件的大小限制。在这个示例中,我们将文件大小限制为 1 MB。
结论
本文介绍了如何在 Fastify 中处理文件上传。我们使用了 Multer 中间件,演示了单个文件和多个文件上传的示例代码,并介绍了如何限制上传文件的大小和类型。Multer 的丰富选项可以使我们轻松处理任何类型的文件上传需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f7c74bc5c563ced5aa67a7