【问题标题】:How to decode base64 to image file in Node.js?如何在 Node.js 中将 base64 解码为图像文件?
【发布时间】:2014-06-12 03:02:24
【问题描述】:

我知道这个问题被问了好几次,但不幸的是,我似乎没有任何用处。

我将 img 的 src 发布到我的节点/快递。它看起来像这样:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JF ... UUUUAFFFFAH/2Q==

数据保存在图片中。我剪切了 data:image-stuff 并得到了原始 base64 和文件类型。

    var result = {
        "type":"",
        "data":""
    }

    var matches = picture.match(/^data:image\/([A-Za-z-+\/]+);base64,(.+)$/),response = {};
    result.type = matches[1];
    result.data = new Buffer(matches[2], 'base64');

    require('fs').writeFile(mediaFolder+'/test.'+result.type, result.data, "binary", function(err){
        res.status(500).send("error");
    });

    res.status(200).send("success");

当我尝试打开保存的图像时,它显示:已损坏或太大。我还尝试在 writeFile 方法中设置“二进制”参数。客户端总是得到 200 http 状态。

我不知道这有什么问题。我用在线解码器检查了原始 base64 字符串。它工作得很好。 我记录了每个字符串/匹配项,对我来说一切正常。

任何帮助都会很好地解决这个问题。
提前致谢!

编辑:

这是我发送图片的方式:

var base64Image = $('#show-picture').attr('src');
xmlhttp.open("POST","/webapp-ajax",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("picture="+base64Image);

【问题讨论】:

  • 如何将文件发送到服务器?
  • 我使用 XMLHttpRequest 并将其发布到 node/express
  • 你在使用encodeURIComponent吗?
  • 我已经用我如何将图片发送到节点的代码编辑了我的问题。
  • 为什么不只是发送图像文件,为什么要乱用base64开头?

标签: javascript image node.js express base64


【解决方案1】:

我相信您需要在发送到服务器之前使用encodeUriComponent(base64)

尝试发送 JSON 对象,并在客户端解析图像。

例如:

var mimeType = image.split(';')[0];

var base64 = encodeUriComponent(image.split(',')[1]);

var imageData = {

  "mimeType" : mimeType,

  "src" : base64

}

...

xmlhttp.setRequestHeader("Content-type","application/json");
xmlhttp.send(imageData);

【讨论】:

  • 您的解决方案是对的!我对其进行了一些修改以供我使用,它就像一个魅力 =) 如果可以的话,我会投票给你!
猜你喜欢
  • 1970-01-01
  • 2018-09-25
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多