首页 > 解决方案 > 以角度将文件转换为base64

问题描述

我是 Angular 的新手,我想将文件转换为 base64 字符串。我试试这个,它给出了 base64 字符串,但是当我尝试使用在线工具对其进行解码时,它没有给出正确的结果,任何人都可以帮助我,谢谢。

我们可以将 pdf 和 word 文件转换为 base64 或只是图像。使用我的代码我成功转换了图像但没有任何其他文件

我的html代码:

 <input type="file" (change)="base($event)">

和我的 ts 代码:

 base(event: { target: { files: any[]; }; }) {
const file = event.target.files[0];
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
    console.log(reader.result);
};

}

标签: javascriptangularbase64

解决方案


您的代码工作正常。您确定您正确获取文件对象吗?

下面是相同的stackblitz 演示

此外,最好在读取文件时使用 Promise。您可以使用以下函数来读取文件。它将文件作为输入并解析为 base64 字符串。

private readBase64(file): Promise<any> {
const reader = new FileReader();
const future = new Promise((resolve, reject) => {
  reader.addEventListener('load', function () {
    resolve(reader.result);
  }, false);
  reader.addEventListener('error', function (event) {
    reject(event);
  }, false);

  reader.readAsDataURL(file);
});
return future;

}

如下调用此函数 -

this.readBase64(file)
    .then((data) => {
        // your code
    });

推荐阅读