How do I convert an image to a base64-encoded data URL in sails.js or generally in the servers side JavaScript?

As I understand you want to convert a file into base64 encoded string. Whether the file is image or not, that does not matter.

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');
}

Usage:

var base64str = base64_encode('kitten.jpg');

Source


It can be achieved with readFileSync, passing in the image path as the first parameter and an encoding option as the second. As show below:

var fs = require('fs');

var imageAsBase64 = fs.readFileSync('./your-image.png', 'base64');

As per the node documentation:

fs.readFileSync(path[, options])

Synchronous version of fs.readFile(). Returns the contents of the path.

If the encoding option is specified then this function returns a string. Otherwise it returns a buffer.