我有一个这样的数据网址:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
将二元数据作为二进制数据(例如Buffer
)的最简单方法是什么,以便将其写入文件?
答案 0 :(得分:56)
使用'base64'编码将数据放入Buffer中,然后将其写入文件:
var fs = require('fs');
var string = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
var regex = /^data:.+\/(.+);base64,(.*)$/;
var matches = string.match(regex);
var ext = matches[1];
var data = matches[2];
var buffer = new Buffer(data, 'base64');
fs.writeFileSync('data.' + ext, buffer);
答案 1 :(得分:21)
试试这个
var dataUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
var buffer = new Buffer(dataUrl.split(",")[1], 'base64');
答案 2 :(得分:3)
我最近也遇到过这样的问题(解析和验证数据网址),并找到了以下解决方法:https://gist.github.com/bgrins/6194623
我创建了2个软件包,以便在代码中更轻松地处理数据URL。他们来了:
https://github.com/killmenot/valid-data-url
https://github.com/killmenot/parse-data-url
查看examples