首页 > 解决方案 > 从 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。

标签: javascriptbase64

解决方案


我最近在做一个这样的项目并且遇到了同样的问题。我使用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);

我希望这有帮助!


推荐阅读