I want to read a file as a list of bytes and encode it as base64 so I can upload it to a server. I have the code in dart (Flutter) which is this:
String fileString = base64Encode(file.readAsBytesSync());
I want to do this in javascript. I have used this but it doesn't work
const form = document.getElementById('form');
const file = document.getElementById('file');
const courseId = "<?php print($courseId) ?>";
form.addEventListener('submit', e => {
e.preventDefault();
// get file name and type
var filename = file.files[0].name;
var filetype = filename.split(".").pop();
var reader = new FileReader();
reader.readAsBinaryString(file.files[0]);
reader.onload = function (){
// filestring = btoa(reader.result);
console.log(reader.result);
}
//base64 encode
var filestring = btoa(reader.result);
const formData = new FormData();
formData.append("action", "uploadFile");
formData.append("file", filestring.toString());
formData.append("name", filename.toString());
formData.append("type", filetype.toString());
formData.append("courseId", courseId);
fetch('upload.php', {
method: 'POST',
body: formData
}).then(response => {
console.log(response);
}).catch(console.error);
});