koa2实现上传文件需要中间件的帮助,由三种可以使用的,这里使用koa-body来实现
需要注意的是koa-body有一些坑需要注意:
- 位置 use的位置要在
app.use(router.routes());
之前 - 不能同时与koa-bodyparser同时使用,否则在post请求时会出现请求被拦截的情况
app.ts:
import * as koaBody from 'koa-body';
import * as Router from 'koa-router';
import AppRoutes from './routes';
const router = new Router();
// 相当于注册每一个路由,在路由文件里规定路径和方法
AppRoutes.forEach(route => router[route.method](route.path, route.action));
// 上传需要配置的中间件 引入位置讲究,且与bodyparser冲突
app.use(koaBody({
multipart: true,
formidable: {
uploadDir: path.join(__dirname, 'public/upload/'), // 设置文件上传目录
maxFileSize: 500 * 1024 * 1024, // 设置上传文件大小最大限制,默认5M
},
}));
app.use(router.routes()