Search code examples
javascriptbase64

How to convert file to base64 in JavaScript?


UPD TypeScript version is also available in answers

Now I'm getting File object by this line:

file = document.querySelector('#files > input[type="file"]').files[0]

I need to send this file via json in base 64. What should I do to convert it to base64 string?


Solution

  • 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 = reject;
    });
    
    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];
       try {
          const result = await toBase64(file);
          return result
       } catch(error) {
          console.error(error);
          return;
       }
       //...
    }