Appearance
koa-body
简介
koa-body 是一个功能强大的请求体解析中间件,支持 multipart、urlencoded 和 json 请求体。它可以处理文件上传,并提供了丰富的配置选项。
安装
bash
npm install koa-body基本使用
javascript
const Koa = require('koa')
const { koaBody } = require('koa-body')
const app = new Koa()
// 注册中间件
app.use(koaBody())
app.use(async (ctx) => {
// 获取请求体数据
console.log(ctx.request.body)
// 获取上传的文件
console.log(ctx.request.files)
})
app.listen(3000)高级配置
javascript
const Koa = require('koa')
const { koaBody } = require('koa-body')
const path = require('path')
const app = new Koa()
app.use(
koaBody({
// 支持文件上传
multipart: true,
formidable: {
// 上传目录
uploadDir: path.join(__dirname, 'uploads'),
// 保持文件后缀
keepExtensions: true,
// 文件大小限制,默认2M
maxFileSize: 200 * 1024 * 1024,
// 文件数量限制
maxFiles: 5,
},
// 解析 urlencoded
urlencoded: true,
// 解析 json
json: true,
// 解析文本
text: true,
// 错误处理
onError: (err, ctx) => {
console.error(err)
ctx.throw(422, '文件上传失败')
},
}),
)
app.use(async (ctx) => {
const file = ctx.request.files?.file
if (file) {
ctx.body = {
filename: file.originalFilename,
path: file.filepath,
}
} else {
ctx.body = ctx.request.body
}
})
app.listen(3000)注意事项
- 在使用文件上传功能时,需要确保上传目录存在且有写入权限
- 建议设置文件大小限制,避免服务器资源被耗尽
- 对于大文件上传,建议使用流式处理
- 文件上传完成后,记得及时清理临时文件