Koa 中如何处理文件上传?

· 约 4 分钟读完 · 第 54 / 117 章

推荐答案

在 Koa 中处理文件上传通常使用 koa-body 中间件或 koa-multer 中间件。以下是使用 koa-body 的示例:

本题详细解读

1. 使用 koa-body 中间件

koa-body 是一个功能强大的中间件,支持处理多种类型的请求体,包括 JSON、表单数据和文件上传。在处理文件上传时,koa-body 会将上传的文件存储在 ctx.request.files 对象中。

2. 配置 koa-body

在配置 koa-body 时,需要设置 multipart: true 以启用文件上传功能。formidable 选项用于配置 formidable 库,该库负责处理文件上传。常见的配置项包括:

  • uploadDir:指定上传文件的保存目录。
  • keepExtensions:是否保留文件的扩展名。

3. 处理上传的文件

在路由处理函数中,可以通过 ctx.request.files 访问上传的文件。每个文件对象包含以下属性:

  • path:文件在服务器上的临时路径。
  • name:文件的原始名称。
  • type:文件的 MIME 类型。
  • size:文件的大小。

可以通过 fs.createReadStream 读取文件,并通过 fs.createWriteStream 将文件写入目标目录。

4. 使用 koa-multer 中间件

koa-multer 是另一个常用的文件上传中间件,基于 multer 库。它提供了更细粒度的控制,适用于需要更复杂文件处理逻辑的场景。

5. 总结

在 Koa 中处理文件上传可以通过 koa-body 或 koa-multer 中间件实现。koa-body 更适合简单的文件上传需求,而 koa-multer 则提供了更多的配置选项,适合复杂的文件处理场景。