koa实现文件上传

2018-12-01  本文已影响0人  李牧敲代码

文件上传是一个经常要用到的功能,这里对基于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~

上一篇 下一篇

猜你喜欢

热点阅读