javascript - 从 base64 字符串生成文件
问题描述
我正在使用 web 服务来获取 base64 字符串,我需要将该文档作为 PDF 显示给用户。
var charactersArray = atob(base64String);
var byteNumbers = new ArrayBuffer(charactersArray.length);
for (var i = 0; i < charactersArray.length; i++) {
byteNumbers[i] = charactersArray.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var file = new File([byteArray], "file.pdf", {
type: "application/pdf",
});
然后我使用这个“文件”来创建一个 url
var url = URL.createObjectURL(file);
我正在使用 ng-click 指令在按钮中打开此 url,但我正在加载 PDF。
解决方案
我最近在做一个这样的项目并且遇到了同样的问题。我使用base64-arraybuffer NPM 库将 base64 字符串转换为字节数组。
它是一个 JS 库,所以安装后需要像这样导入:
import * as buffer from 'base64-arraybuffer';
对象 URL 的创建方式如下:
var byteArray = buffer.decode(base64String);
var file = new Blob([byteArray], {type: 'application/pdf'});
var pdfUrl = URL.createObjectURL(file);
我希望这有帮助!
推荐阅读
- jquery - 尝试使用 HTML 类填充表单的主题行
- django - 类别子类别未正确显示 drf django
- android - 当我点击它时如何显示我的标签的价值?
- javascript - nodejs如何监控内存消耗
- powerapps - 如何修复 Azure Maps PCF 组件绘图工具偏移
- mysql - 显示唯一键而不是外键 TypeOrm - MySql
- javascript - 基于时间的 Javascript 交付展示
- java - 不兼容的类更改错误 - Web 项目的 org.eclipse.jetty.annotations.AnnotationParser
- java - IBM Liberty Server 每个请求允许的最大参数异常
- mysql - 为什么会发生mysql死锁?