前端/移动开发面试题更新 2026-08-05

请说明在 Koa 应用中处理 multipart 请求(即包含文件上传的表单数据)的常见做法,包括需要引入的中间件、主要配置项以及请求解析后的处理流程。

前端/移动开发技术原理方案权衡问题排查KoaNode.js

考察说明

考查对 Koa 中 multipart 请求处理方式及常用中间件的了解。

回答思路

  1. 【回答框架 1】multipart 请求是 HTTP 的一种格式,主要用于文件上传,Koa 本身不解析 body,需要借助中间件。常用的有 koa-body、koa-multer 等。以 koa-body 为例,安装后通过 app.use(koaBody({ multipart: true })) 启用,配置可包含 uploadDir(上传目录)和 formidable 选项等。
  2. 【回答框架 2】解析后,ctx.request.body 包含普通字段,ctx.request.files 包含上传的文件,每个文件对象有 name、path、size 等属性。处理流程通常是先校验文件大小和类型,然后将文件从临时目录移动到目标位置,并记录文件信息。
  3. 【回答框架 3】如果是 koa-multer,它基于 multer,通过定义存储引擎(如 diskStorage)来配置保存路径,使用 upload.single('file') 中间件处理单个文件,之后文件信息挂载在 ctx.file 上,然后进行业务处理。
  4. 【回答框架 4】还需处理错误情况,如上传中断、文件过大等,koa-body 会抛出异常,需在错误处理中间件中捕获并返回适当的响应。
  5. 【关键点 1】Koa 需要用中间件解析 multipart,常用 koa-body 或 koa-multer。
  6. 【关键点 2】配置 multipart: true 后,普通字段和文件分别位于 ctx.request.body 和 ctx.request.files。
  7. 【关键点 3】文件处理需注意权限、路径安全和类型校验。
  8. 【易错点 1】不要直接使用 koa-bodyparser 处理 multipart,它不支持文件上传。
  9. 【易错点 2】忽略大小限制可能导致内存或磁盘溢出。
  10. 【易错点 3】临时文件需要及时清理或移动,避免残留。