I'm trying to read an image from client side encoded in base64. How to read with nodejs?
My code:
// 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. }); } })
But, I got this error:
In read file [Error: Path must be a string without null bytes.]
* SOLUTION *
lwip
accept buffer in open method.
// add to buffer base64 image from step var encondedImage = new Buffer(image.name, 'base64'); // check err lwip.open(encondedImage, 'jpg', function(err, image){ // image.resize(..), etc });
I think that the following example demonstrates what you need:http://www.hacksparrow.com/base64-encoding-decoding-in-node-js.html
The essence of the article is this code part:
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);