如何将base64转为图片,然后存在当前用户的upload 目录下
发布于 9 年前 作者 JChehe 11434 次浏览 最后一次编辑是 8 年前 来自 问答
exports.upload_ecg = function(req, res, next){
  var rb = req.body;
  var eName = rb.event.name;
  var eLevel = rb.event.level;
  var eConent = rb.event.content;
  var eImgBase64 = rb.event.img;
  
  eImgBase64 = eImgBase64.replace(/^data:image\/\w+;base64,/, "");
  var imgBuffer = new Buffer(eImgBase64, 'base64'); // 
  console.log(imgBuffer)
}

我想将ajax post上来的canvas 图片的base64编码传到后台,然后将base64转为Buffer,目前已接收到base64(eImgBase64), 我现在遇到的问题是,如何将Buffer转为图片保存在 public/upload/#{req.session.id}/img 目录下,谢谢。 主要是不会对文件的操作

11 回复

利用fs-extra模块,可以替换 fs模块,它的mkdirs方法,可以判断文件是否存在而创建多级目录,然后根据 writeFile 方法(原生fs和 fs-extra 都有,因为fs是fs-extraz子集)按照相应编码创建图片。 http://stackoverflow.com/questions/6926016/nodejs-saving-a-base64-encoded-image-to-disk

var base64Data = req.rawBody.replace(/^data:image\/png;base64,/, "");

require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
  console.log(err);
});

传base64很浪费带宽 From Noder

@satanmonkey 同意

来自酷炫的 CNodeMD

@satanmonkey 为什么这样说?

@JChehe base64比二进制大了几倍 From Noder

回到顶部