koa实现图片转码、上传服务器


const Koa = require('koa');
const app = new Koa();
const cache = require('koa-static');
const router =require('koa-router')();
const path = require('path')  // 原生path模块
var bodyParser = require('koa-bodyparser');//对于POST请求的处理,koa-bodyparser中间件可以把koa2上下文的formData数据解析到ctx.request.body中。他要和koa-multer结合使用上传图片,但是koa-body一个中间件就能上传文件。
const fs = require("fs");
const koaBody = require('koa-body')({ 
  multipart: true,  // 允许解析'multipart/form-data'类型的文件
  formidable: {
      maxFileSize: 200*1024*1024, // 设置上传文件大小最大限制,默认2M
  }
})

// 新建文件夹
fs.readdir(__dirname+"/test/",function (err,files){
    if(err){
        fs.mkdir(__dirname+"/test/",function(err){
            if (err) {
                return console.error(err);
            }
            console.log("目录创建成功。");
         })
    }else{
        console.log("已经存在文件夹")
    }
})

// 上传图片接口
router.post('/images', koaBody,async (ctx) => {
  console.log(ctx.request.body)
  var name = ctx.request.body.name;
  var imgBase64 = ctx.request.body.imgBase64;
  // 去掉图片base64码前面部分data:image/png;base64,
  var resultBase64=imgBase64.replace(/^data:image\/\w+;base64,/,"");
  var path=`test/${name}.jpg`;
  var imgBuffer=new Buffer(resultBase64,'base64');
  fs.writeFile(path,imgBuffer,function(err){
    if(err){
      console.log(err)
    }else{
      console.log("写入图片成功!")
    }
  })
  ctx.body = {
      code: 200,
      text: '图片写入成功',
      path: `http://localhost:3000/test/${name}`
  }
})



app.use(cache('src'));//静态资源目录
app.use(cache('test'));//http://localhost:3000/hello.jpg 能查看到上传的图片
app
  .use(router.routes())
  .use(router.allowedMethods())

app.listen(3000, () => {
  console.log(`server is running at 3000 port`)
});

你可能感兴趣的:(知识分享,学习笔记)