javascript - 以角度将文件转换为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);
};
}
解决方案
您的代码工作正常。您确定您正确获取文件对象吗?
下面是相同的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
});
推荐阅读
- r - 通过所有因素所有水平的所有组合进行 t 检验
- django - Celery 在使用 app.control.purge() 时运行任务会发生什么?
- fluent-nhibernate - 从 DetachedCriteria 中选择子查询
- ios - 如果文件的速度大于 60,为什么 AKAppleSequencer 播放 MIDI 文件的速度更快?
- java - 无法将 avro 写为字节数组然后将其读回
- structuremap - 使用 StructureMap 配置的 MassTransit - ContainerScoped 不工作
- c++ - 在 Windows 上使用 va_copy 是否安全
- python - python:根据条件对时间序列数据进行分组或拆分
- spring - Transacted Route 和 Transactional Endpoints,事务提交顺序
- azure - 从负载平衡中排除 Azure AppService 实例