版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
koa-body是一款可以实现实现文件上传的中间件,也可以接收参数。
防坑指南
注意ctx.request.files.file末尾的file是name的名称
例如
如果name为pic,则 const file = ctx.request.files.pic;
<input type="file" name="pic">
首先在app.js中引用koa-body
const koa = require('koa');
const app = new koa();
const koaBody = require('koa-body');
app.use(koaBody({
multipart: true,
formidable: {
maxFileSize: 500*1024*1024 // 设置上传文件大小最大限制,默认5M
}
}));
然后在方法中使用koa-body实现文件上传
const file = ctx.request.files.file; // 上传的文件在ctx.request.files.file
// 创建可读流
const reader = fs.createReadStream(file.path);
// 修改文件的名称
var myDate = new Date();
var newFilename = myDate.getTime()+'.'+file.name.split('.')[1];
var uploadPath = path.join(__dirname, '../public/upload/') + `/${newFilename}`;
//创建可写流
const upStream = fs.createWriteStream(uploadPath);
// 可读流通过管道写入可写流
reader.pipe(upStream);
//返回保存的路径
return ctx.body = { code: 200, data: { url: 'http://' + ctx.headers.host + '/upload/' + newFilename } };
github案例链接
https://github.com/xiaopenhu/koa-body-demo.
请点个赞哦,希望能对您有所帮助