ReadFile in Base64 Nodejs

Javascriptnode.jsImageBase64Readfile

Javascript Problem Overview


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.]

Javascript Solutions


Solution 1 - Javascript

Latest and greatest way to do this:

Node supports file and buffer operations with the base64 encoding:

const fs = require('fs');
const contents = fs.readFileSync('/path/to/file.jpg', {encoding: 'base64'});

Or using the new promises API:

const fs = require('fs').promises;
const contents = await fs.readFile('/path/to/file.jpg', {encoding: 'base64'});

Solution 2 - Javascript

I think that the following example demonstrates what you need: I removed the link because it was broken.

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

Solution 3 - Javascript

var fs = require('fs');

function base64Encode(file) {
    var body = fs.readFileSync(file);
    return body.toString('base64');
}


var base64String = base64Encode('test.jpg');
console.log(base64String);

Solution 4 - Javascript

The following code reads a text file. Then converts it to text, then reads it as base64 and puts that into a binary buffer, and saves it back to a true binary.

import { readFileSync, writeFileSync } from 'fs'
import { tmpdir } from 'os'
const contents = readFileSync('./temp.txt')
const buffedInput = Buffer.from(contents.toString(), 'base64')
writeFileSync(`${tmpdir}/temp.zip`, buffedInput)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionbrunocascioView Question on Stackoverflow
Solution 1 - JavascriptMike MartinView Answer on Stackoverflow
Solution 2 - JavascriptSjoerdView Answer on Stackoverflow
Solution 3 - JavascriptManish Kumar Jaiswal MJView Answer on Stackoverflow
Solution 4 - JavascriptRay FossView Answer on Stackoverflow