如何在Node.js中将base64解码为图像文件?

我知道这个问题被问了几次,但不幸的是,似乎没有任何工作对我来说。

我张贴img的src到我的节点/快递。 它看起来像这样:

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

数据保存在图片中。 我裁剪的数据:图像的东西,并得到了原始的base64和文件types。

  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方法中设置“binary”参数。 客户端总是获得200 http状态。

我不知道这有什么问题。 我用在线解码器检查了原始的base64string。 它工作完美。 我logging每一个string/比赛,一切看起来对我来说没问题。

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

编辑:

这是我发送图片的方式:

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

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

尝试发送一个JSON对象,并parsing客户端的图像。

例如:

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