Saltar al contenido

Escribir datos binarios usando node.js fs.writeFile para crear un archivo de imagen

Solución:

El lenguaje JavaScript no tenía ningún mecanismo para leer o manipular flujos de datos binarios. los Buffer La clase se introdujo como parte de la API de Node.js para que sea posible interactuar con secuencias de octetos en el contexto de cosas como secuencias de TCP y operaciones del sistema de archivos.

JavaScript puro, aunque es excelente con cadenas codificadas en Unicode, no maneja muy bien datos binarios directos.

Cuando se escriben grandes cantidades de datos en un socket, es mucho más eficiente tener esos datos en formato binario que tener que convertir desde Unicode.

var fs = require('fs');
// string generated by canvas.toDataURL()
var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0"
    + "NAAAAKElEQVQ4jWNgYGD4Twzu6FhFFGYYNXDUwGFpIAk2E4dHDRw1cDgaCAASFOffhEIO"
    + "3gAAAABJRU5ErkJggg==";
// strip off the data: url prefix to get just the base64-encoded bytes
var data = img.replace(/^data:image/w+;base64,/, "");
var buf = Buffer.from(data, 'base64');
fs.writeFile('image.png', buf);

Referencia

He tenido la pregunta en cuestión. Resolví el problema cuando hice el valor predeterminado nulo de “codificación” en la biblioteca de “solicitud”

var request = require("request").defaults({ encoding: null });
var fs = require("fs");

fs.writeFile("./image.png", body, function(err) {
    if (err) throw err;
});

En lugar de escribir el archivo directamente en su cliente, primero solicite al servidor que envíe imágenes en formato binario.

   let request= {
        headers: {
            'Content-Type': 'image/jpeg',
            'Authorization': "your token"
        },
        encoding:'binary'
    };
     request.get(url,request,(error, response, body)=>{
        if(error){
            console.log('error in get photo',error)
            return "default image to server";  
        }else{
            if(response.statusCode == 200){ 

      Fs.writeFile('path',body,'binary',function(err){
                    if(err){
                        return "your message";   
                    }else{
                        return "success";
                    }
                })
            }else{
                console.log('error in get photo 3')
                return "your message";  
            }
        }
    })
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *