How to decode base64 to image file in Node.js?
我知道这个问题已经被问过几次了,但是不幸的是,似乎没有什么对我有用。
我将img的src发布到我的节点/表达式。看起来像这样:
1 | data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JF ... UUUUAFFFFAH/2Q== |
数据保存在图片中。我剪切了data:image-stuff并得到了原始的base64和文件类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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状态。
我不知道这是怎么了。我用在线解码器检查了原始的base64字符串。效果很好。
我记录了每个字符串/匹配项,一切对我来说都还不错。
任何帮助都可以解决这个问题。
在此先感谢!
编辑:
这是我发送图片的方式:
1 2 3 4 | 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); |
我相信您需要在发送到服务器之前使用
尝试发送JSON对象,并在客户端解析图像。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); |