Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I am making a small app in sails.js and I need to store images in database. For that, I need to convert an image to a base64-encoded data URL so that I can save it as a string in my sails models. However, I don't know how to convert it in this form. All the older questions asked about converting an image to base64-encoded data URLs, and they answer this about doing it on the client side. However, I want to do it on the server side while I will be getting the image through a post request. How can I achieve this?

like image 790
Adil Malik Avatar asked Jul 02 '14 05:07

Adil Malik


People also ask

What is data URL in Javascript?

A Data URL is a URI scheme that provides a way to inline data in a document, and it's commonly used to embed images in HTML and CSS.


2 Answers

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

like image 62
alandarev Avatar answered Sep 21 '22 21:09

alandarev


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.

like image 39
JSON C11 Avatar answered Sep 24 '22 21:09

JSON C11