请说明在 Koa 框架中实现文件上传的具体流程和常用方案。
考察说明
考查对 Koa 框架中文件上传处理机制及中间件使用的掌握程度。
回答思路
- 【回答框架 1】Koa 本身不直接处理文件上传,需借助中间件如 koa-body、multer 或 formidable。核心流程是解析请求体中的 multipart/form-data 格式,提取文件流并保存到指定位置。
- 【回答框架 2】使用 koa-body 时,配置 multipart: true 即可自动解析文件,文件对象挂载在 ctx.request.files 上,可通过 fs.rename 或流式写入保存。
- 【回答框架 3】使用 multer 时,需先配置存储引擎(如磁盘存储或内存存储),再通过中间件处理上传字段,文件信息保存在 req.file 或 req.files 中。
- 【回答框架 4】处理时需注意文件大小限制、文件类型校验、临时文件清理以及错误处理,避免内存溢出或恶意文件上传。
- 【回答框架 5】保存文件后应返回可访问的 URL 或路径,并考虑使用云存储服务(如 OSS、S3)以支持分布式部署。
- 【关键点 1】Koa 需借助中间件解析 multipart 数据,常用 koa-body 或 multer。
- 【关键点 2】文件对象通常挂载在 ctx.request.files 或 req.file 上。
- 【关键点 3】需配置大小限制、类型校验和错误处理。
- 【关键点 4】保存方式可为本地磁盘或云存储,并返回访问路径。
- 【关键点 5】注意临时文件清理和安全性(如限制扩展名)。
- 【易错点 1】不要直接使用 koa-bodyparser,它不支持文件上传。
- 【易错点 2】忽略文件大小限制可能导致内存溢出。
- 【易错点 3】未校验文件类型可能引入安全风险。