Estoy tratando de leer una imagen del lado del cliente codificada en base64. ¿Cómo leer con nodejs?
Mi código:
// add to buffer base64 image var encondedImage = new Buffer(image.name, 'base64'); fs.readFile(encondedImage, "base64", function(err, buffer){ if ( err ) { console.log('In read file') console.log(err) } else { // check err lwip.open(buffer, 'jpg', function(err, image){ console.log('in open') if ( err ) console.log(err) if ( image ) console.log(image) // check 'err'. use 'image'. // image.resize(...), etc. }); } })Pero, recibí este error:
In read file [Error: Path must be a string without null bytes.]La última y mejor manera de hacer esto:
Node admite operaciones de archivo y búfer con la codificación base64 :
const fs = require('fs'); const contents = fs.readFileSync('/path/to/file.jpg', {encoding: 'base64'});O usando la nueva API de promesas :
const fs = require('fs').promises; const contents = await fs.readFile('/path/to/file.jpg', {encoding: 'base64'});Creo que el siguiente ejemplo demuestra lo que necesita: eliminé el enlace porque estaba roto.
La esencia del artículo es esta parte del código:
var fs = require('fs'); // function to encode file data to base64 encoded string function base64_encode(file) { // read binary data var bitmap = fs.readFileSync(file); // convert binary data to base64 encoded string return new Buffer(bitmap).toString('base64'); } // function to create file from base64 encoded string function base64_decode(base64str, file) { // create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded var bitmap = new Buffer(base64str, 'base64'); // write buffer to file fs.writeFileSync(file, bitmap); console.log('******** File created from base64 encoded string ********'); } // convert image to base64 encoded string var base64str = base64_encode('kitten.jpg'); console.log(base64str); // convert base64 string back to image base64_decode(base64str, 'copy.jpg');var fs = require('fs'); function base64Encode(file) { var body = fs.readFileSync(file); return body.toString('base64'); } var base64String = base64Encode('test.jpg'); console.log(base64String);