How to convert file to base64 in JavaScript? How to convert file to base64 in JavaScript? javascript javascript

How to convert file to base64 in JavaScript?


Try the solution using the FileReader class:

function getBase64(file) {   var reader = new FileReader();   reader.readAsDataURL(file);   reader.onload = function () {     console.log(reader.result);   };   reader.onerror = function (error) {     console.log('Error: ', error);   };}var file = document.querySelector('#files > input[type="file"]').files[0];getBase64(file); // prints the base64 string

Notice that .files[0] is a File type, which is a sublcass of Blob. Thus it can be used with FileReader.
See the complete working example.


Modern ES6 way (async/await)

const toBase64 = file => new Promise((resolve, reject) => {    const reader = new FileReader();    reader.readAsDataURL(file);    reader.onload = () => resolve(reader.result);    reader.onerror = error => reject(error);});async function Main() {   const file = document.querySelector('#myfile').files[0];   console.log(await toBase64(file));}Main();

UPD:

If you want to catch errors

async function Main() {   const file = document.querySelector('#myfile').files[0];   const result = await toBase64(file).catch(e => Error(e));   if(result instanceof Error) {      console.log('Error: ', result.message);      return;   }   //...}


If you're after a promise-based solution, this is @Dmitri's code adapted for that:

function getBase64(file) {  return new Promise((resolve, reject) => {    const reader = new FileReader();    reader.readAsDataURL(file);    reader.onload = () => resolve(reader.result);    reader.onerror = error => reject(error);  });}var file = document.querySelector('#files > input[type="file"]').files[0];getBase64(file).then(  data => console.log(data));