在JavaScript中将Base64类型转换为字符串

在JavaScript中将Base64类型转换为字符串,javascript,base64,Javascript,Base64,如何将reader.readDataAsUrl()返回的base64字符串转换为外观完全相同的字符串 Javascript: function getBase64(file) { var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { return reader.result; }; reader.onerror = f

如何将
reader.readDataAsUrl()
返回的base64字符串转换为外观完全相同的字符串

Javascript:

function getBase64(file) {
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function () {
        return reader.result;
    };
    reader.onerror = function (error) {
        console.log('Error: ', error);
        return false;
    };
} // works and returns a base64 version of the image
但是当我执行
typeof(getBase64(…)
时,它表示未定义

那么,如何将这个base64“字符串”转换为实际字符串呢

背景: 我想要一个字符串,并删除结尾处的“=”作为结果

编辑/解决方案:
我不知道
reader.readAsDataURL
是一个异步函数,我不得不等待
reader.onload()

根据您的代码,您可以执行类似的操作:

函数getBase64(文件,回调){ var reader=new FileReader(); reader.readAsDataURL(file.files[0]); reader.onload=函数(){ 回调(reader.result.substring(22));//将数据url格式更改为“real”base64 }; reader.onerror=函数(错误){ console.log('Error:',Error); 返回false; }; } document.querySelector('input[type=“file”]”)。addEventListener('change',function(){ getBase64(此,函数(结果){ var decode=atob(结果);//解码图像 var encode=btoa(decode);//在Base64中重新编码图像 console.log(结果);//Base64映像 console.log(decode);//图像已解码 console.log(encode);//Base64映像 }); });

工作并返回图像的base64版本
我对此表示怀疑,该函数不返回任何内容
getBase64
不返回值,因此您得到的是
未定义的
,这是正常的。
reader.onload
是异步的,从该函数返回不会从getBase64返回-在调用onload之前,getBase64已经没有返回任何内容(因此是异步的)-您需要一个回调
如何将这个base64“字符串”转换为实际字符串
您说的“实际”是什么意思?这是一个“真正的”字符串。。。全是字符0-9、a-z、a-z、+、/和=。。。它们都是真的!