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`)
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值