koa-body实现文件上传及demo

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43745003/article/details/102721757

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.

请点个赞哦,希望能对您有所帮助

猜你喜欢

转载自blog.csdn.net/weixin_43745003/article/details/102721757