请求在koaBody()调用后就返回了,后面中间件正常执行?
问题描述
koa2,用koabody上传图片表单,请求在koaBody()调用后就返回了,前端收到404,后面的中间件正常执行
相关代码
路由代码
let router = require('./index');
const koaBody = require('koa-body') // 解析图片
const CompanyController = require('../controllers/company');
const { verToken } = require('../middleware/verify')
// 新增公司介绍
router.post('/content/company', verToken,
(ctx,next) => {
console.log('-----1111111------')
next()
}, koaBody({multipart: true}),
(ctx, next) => {
console.log('------2222-------')
next()
},CompanyController.create);
module.exports = router;
控制器
const CompanyModel = require('../models/company')
const fs = require('fs')
const path = require('path')
class CompanyController {
static async create(ctx, next) {
try {
let desc = JSON.parse(ctx.request.body.message);
const file = ctx.request.files.file; // 获取上传文件
// 创建可读流
const reader = fs.createReadStream(file.path);
let filePath = path.join(__dirname, '../', '/public/upload/content' ) + `/${file.name}`;
// 创建可写流
const upStream = fs.createWriteStream(filePath);
// 可读流通过管道写入可写流
reader.pipe(upStream);
desc.imgUrl = filePath;
await CompanyModel.createDesc(desc)
.then(() => {
ctx.body = {
message: 'OK'
};
}).catch(err => {
ctx.status = 422;
ctx.body = {
message: '添加失败'
}
console.log(err);
})
} catch (error) {
console.log(error);
}
}
}
module.exports = CompanyController
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题解决了...是verToken中间件的next忘了加 await,一直以为是koa-body的问题,哭了....