base64

by willystyle

HTML

<input type="file" id="file-input" class="scf-link" accept=".txt">

<button id="convert-button">Convert</button>

JavaScript

const fileElement = document.getElementById('file-input');
const convertButton = document.getElementById('convert-button');

convertButton.addEventListener('click', (ev) => {   
    const file = fileElement.files[0];
   
    if (file) {
        const filename = file.name;
        const [name, ext] = filename.split('.');
        const newFilename = `${name}_base64.${ext}`;
       
        const aReader = new FileReader();
        aReader.readAsText(file, 'UTF-8');
        
        aReader.onload = function (evt) {
            fileElement.innerHTML = evt.target.result;
            const fileContent = aReader.result;
            // console.log('text: ', fileContent);
            const encoded = btoa(unescape(encodeURIComponent(fileContent)));
            // console.log('encoded: ', encoded);
            
            const blob = new Blob([encoded], { type: 'text/plain;charset=utf-8;' });
            const URL = window.URL || window.webkitURL;
    			  const downloadUrl = URL.createObjectURL(blob);
            const a = document.createElement('a');
            a.href = downloadUrl;
    				a.download = newFilename;
    				document.body.appendChild(a);
    				a.click();
    				document.body.removeChild(a);
                        
        };

        aReader.onerror = function (evt) {                     
             fileElement.innerHTML = 'error';
             console.log('error');
        };
    } else {
        alert('Please select file to convert.')
    }
});