2012-07-04 7 views

Respuesta

52

poner los datos en un buffer usando la codificación 'base 64', a continuación, escribir a un archivo:

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

¿Y si no es un PNG? –

+1

¿Sustituye la extensión de archivo adecuada? Esto es solo un ejemplo, la solución general es: (1) obtener la parte de los datos después de la parte 'data: whatever/whatever; base64,', (2) ponerla en un Buffer usando 'base64', (3) escribir esto a un archivo. Si el tipo de mime es diferente, use una extensión de archivo diferente/use un regex/etc. –

+3

¿Qué tal 'var data = string.substr (string.indexOf ('base64') + 7)'? –

17

probar este

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