文件上传是一个经常要用到的功能,这里对基于koa实现文件上传做一个总结。PS:在我的另外一篇博客讲到了图片上传的前端使用[点这里](https://www.jianshu.com/p/78ea4f94a3d0),这里接着那篇博客往下讲。
首先要安装koa-body用于解析请求数据
npm install koa-body
然后就像这样:
const app = new Koa();
const koaBody = require('koa-body'); //解析上传文件的插件
app.use(koaBody({
multipart: true,
formidable: {
maxFileSize: 2000 * 1024 * 1024 // 设置上传文件大小最大限制,默认2M
}
}))
经过路由处理进入到具体的路由处理方法中:
//上传图片
static async uploadimg(ctx) {
let file = ctx.request.file; // 获取上传文件
// 创建可读流
const reader = fs.createReadStream(ctx.request.files['image']['path']);
let filePath = `/shareSource/img/my_blog_img` + `/${ctx.request.files['image']['name']}`;
let remotefilePath = `http://www.xxxx.com:8887/img/my_blog_img` + `/${ctx.request.files['image']['name']}`;
// 创建可写流
const upStream = fs.createWriteStream(filePath);
// 可读流通过管道写入可写流
reader.pipe(upStream);
return ctx.body = {
url: remotefilePath,
message: "文件上传成功",
cc: 0
}
}
ok,这样就可以在你定义的路径下找到上传的文件,本文中的路径是filePath
,而remotefilePath
的路径是文件服务的路径供外部访问资源所用。
大家有不懂活或者觉得需要补充更正的地方欢迎留言,3Q~
网友评论