visor descargar node.js

node.js - descargar - NodeJS escribe el archivo de imagen base64



pdf js viewer html base64 (3)

Mi servidor NodeJS recibe una imagen codificada en base64.

data:image/jpeg;base64,/9j/4QCcRXhpZgAASUkqAAgAAAA ... CiiigD//Z

Los datos recibidos deben guardarse como jpg. Por lo tanto, uso un Buffer y FileSystemWriter:

var imageBuffer = new Buffer(data, ''base64''); //console = <Buffer 75 ab 5a 8a ... fs.writeFile("test.jpg", imageBuffer, function(err) { //... });

el fs.writeFile no llama un error. Se guarda un archivo jpeg, pero no puedo abrirlo. Image-Viewer dice:

File is damaged or too big.

El archivo original tiene 6kb de ancho y el nuevo archivo de 7kb.


Otra forma es usar fs.writeFile con la opción de codificación base64 después de eliminar la metainformación.

var image = ''data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAA..kJggg==''; var data = image.replace(/^data:image///w+;base64,/, ''''); fs.writeFile(fileName, data, {encoding: ''base64''}, function(err){ //Finished });


Tienes que quitarle la metainformación de URL, los data:image/jpeg . (Reiterando lo que dijo @CBroe) Aquí hay una pequeña función para devolver la información correcta de la cadena de entrada.

var data = ''data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAA..kJggg==''; function decodeBase64Image(dataString) { var matches = dataString.match(/^data:([A-Za-z-+//]+);base64,(.+)$/), response = {}; if (matches.length !== 3) { return new Error(''Invalid input string''); } response.type = matches[1]; response.data = new Buffer(matches[2], ''base64''); return response; } var imageBuffer = decodeBase64Image(data); console.log(imageBuffer); // { type: ''image/jpeg'', // data: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 b4 00 00 00 2b 08 06 00 00 00 d1 fd a2 a4 00 00 00 04 67 41 4d 41 00 00 af c8 37 05 8a e9 00 00 ...> }

Luego puedes guardar el buffer usando tu método anterior.

fs.writeFile(''test.jpg'', imageBuffer.data, function(err) { ... });


intenta de esta manera simple

var imgData = ''data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA..kJggg==''; var base64Data = imgData.replace(/^data:image//png;base64,/, ""); require("fs").writeFile("out.png", base64Data, ''base64'', function(err, data) { if (err) { console.log(''err'', err); } console.log(''success''); });

focuse at here 1) data:image/png;base hay png 2) replace(/^data:image//png; aquí también png y name debe guardar con 3) writeFile("out.png png