我有一个PHP脚本,可以将PNG图像编码为Base64字符串.
我想用JavaScript做同样的事情.我知道如何打开文件,但我不知道如何进行编码.我不习惯使用二进制数据.
JavaScript中是否有JSON编码/解码base64编码/解码功能?
我们在后端 (PHP) 中使用dompdf将 HTML 转换为 PDF 。dompdf 生成的输出是 Base64 编码的
$output = $dompdf->output();
base64_encode($output);
Run Code Online (Sandbox Code Playgroud)
这个 Base64 编码的内容作为文件保存在服务器上。当我们像这样解码这个文件内容时:
cat /tmp/55acbaa9600f4 | base64 -D > test.pdf
Run Code Online (Sandbox Code Playgroud)
我们得到一个合适的 PDF 文件。
但是当我们将 Base64 内容作为 JSON 对象内的字符串值传输到客户端时(服务器提供了 RESTful API...):
{
"file_data": "...the base64 string..."
}
Run Code Online (Sandbox Code Playgroud)
并使用 atob() 对其进行解码,然后创建一个 Blob 对象以稍后下载文件,PDF 始终为“空”/损坏。
$scope.downloadFileData = function(doc) {
DocumentService.getFileData(doc).then(function(data) {
var decodedFileData = atob(data.file_data);
var file = new Blob([decodedFileData], { type: doc.file_type });
saveAs(file, doc.title + '.' + doc.extension);
});
};
Run Code Online (Sandbox Code Playgroud)
当我们记录解码的内容时,似乎内容被“破坏”了,因为几个符号与我们使用base64 -D在服务器上解码内容时不一样。
当我们编码/解码简单文本/普通文档的内容时,它按预期工作。但是所有二进制(或非 ASCII 格式)都不起作用。 …