推荐答案
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- --- ----- ---- - ---------------- ----- -- - -------------- -- -- ----------------- -- ----------------------------------------------- -- --------- ----------------------- ----- --------- ------ -- - ----- ---- - ----- --------------- -- ------ -- ------- - ------ ------------------------ -------- --- ---- --------- --- - -- --------- ----- -------- - -------------------- ---------- --------------- ----- ----------- - ------------------------------- ---------------------------- ------ ------------ -------- ----- -------- -------------- --------- ------------- --- --- -- ----- -------------------- ----- -- - -- ----- - ----------------------- ---------------- - ------------------------ --------- -- ------------------------ ---
本题详细解读
1. 引入必要的模块
首先,我们需要引入 fastify
、path
和 fs
模块。fastify
用于创建服务器,path
用于处理文件路径,fs
用于文件系统操作。
2. 注册 fastify-multipart
插件
使用 fastify.register
方法注册 fastify-multipart
插件。这个插件会自动处理 multipart 表单数据,包括文件上传。
3. 创建文件上传路由
在 /upload
路由中,我们使用 request.file()
方法来获取上传的文件。request.file()
返回一个包含文件信息的对象,包括文件名、文件流等。
4. 检查文件是否存在
在处理文件之前,我们需要检查是否有文件被上传。如果没有文件上传,返回 400 状态码和错误信息。
5. 保存文件到指定目录
使用 fs.createWriteStream
创建一个可写流,将上传的文件保存到指定的目录中。data.file.pipe(writeStream)
将文件流写入到目标路径。
6. 返回成功响应
文件上传成功后,返回一个包含成功信息和文件名的 JSON 响应。
7. 启动服务器
最后,使用 fastify.listen
方法启动服务器,监听 3000 端口。
通过以上步骤,你可以使用 fastify-multipart
插件轻松处理文件上传。