首页 > 解决方案 > 将文件输入转换为 Base 64 后返回错误

问题描述

根据如何在 JavaScript 中将文件转换为 base64?我找到了一种将图像转换为基于 javascript 的 base64 的方法,如下所示:

//My Converter Function
        function getBase64(file) {
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function () {
            console.log("befor");
            console.log(reader.result);
            console.log("after");
        };
        reader.onerror = function (error) {
            console.log('Error: ', error);
        };
    }

我通过以下方式使用它:

getBase64(file).then(
    data => (Image64bit = data)

似乎我得到了 64 位字符串但我每次都返回这个错误:(请注意,没有“then”它不会返回任何东西)

zone.js:192 未捕获的类型错误:无法 在 HTMLButtonElement 的 UploadFileAndGetUrl (doctors.js:14949) 处读取未定义的属性“then” 。(doctors.js:14703) 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421) 在 Zone.push../node_modules/zone.js/dist /zone.js.Zone.runTask (zone.js:188) 在 ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:496) 在 invokeTask (zone.js:1540) 在 HTMLButtonElement.globalZoneAwareCallback (zone.js:1566)

之前

医生.js:14992 数据:图像/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAH0CAMAAADynrlKAAACBFBMVEUAzG9U1pBn2Zskz3vV8+H////g9umH4K71/Pjr+fHJ8Nm97dE/04aj5sCW47d43aSw6sg1143j+e801owDZX.js

我该如何解决这个错误?

标签: javascriptangular

解决方案


zone.js:192 未捕获类型错误:无法读取未定义的属性“then”

函数getBase64不返回Promise.

您需要更正getBase64它返回 aPromise并在内部解析为reader.onload的值reader.result

function getBase64(file) {
  return new Promise(resolve, reject) => {
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function () {
      console.log("befor");
      console.log(reader.result);
      console.log("after");
      resolve(reader.result);
    };
    reader.onerror = function (error) {
      console.log('Error: ', error);
      reject(error);
    };
  }
}

推荐阅读