web-dev-qa-db-ja.com

NodeでデータURLを解析するにはどうすればよいですか?

次のようなデータURLがあります。

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

これをバイナリデータ(たとえば、Buffer)として取得してファイルに書き込めるようにする最も簡単な方法は何ですか。

31
a paid nerd

「base64」エンコーディングを使用してデータをバッファに入れ、これをファイルに書き込みます。

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);
58
Michelle Tilley

これを試して

var dataUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
var buffer = new Buffer(dataUrl.split(",")[1], 'base64');
21
bert

最近、このような質問(データURLの解析と検証)にも出会い、次の回避策を見つけました: https://Gist.github.com/bgrins/619462

コードでデータURLを簡単に操作できるように、2つのパッケージを作成しました。ここにあります: https://github.com/killmenot/valid-data-url
https://github.com/killmenot/parse-data-url

チェックアウト

2