我正在通过 jQuery AJAX 调用调用
/download
端点。来自端点的响应是 base64 字符串。当我复制此响应并将其粘贴到在线 base64 到 PDF 转换器时,我得到了所需的 PDF 文件。然而,通过下面的代码访问它会稍微调整字符串,这使得 PDF 只是一个空白文档。
$.ajax({
type: "POST",
url: "/download",
data: JSON.stringify(postData),
contentType: "application/json",
encode: true,
})
.done(function (data) {
window.open("data:application/pdf;base64," + Base64.encode(data));
})
.fail(function (err) {
$('.toast-header strong').html('Download Error');
$('.toast-body').html('An error occured while downloading the file.');
let toast = new bootstrap.Toast($('#liveToast'));
toast.show();
});
我尝试过访问不同的方法来访问
data
像 data.toString()
或者简单地使用 data
变量而不是将它传递给 Base64.encode()
函数没有运气。我怎样才能简单地使用从 API 响应中获得的纯文本?
您应该使用 JavaScript 中内置的 btoa() 函数来编码 base64 字符串,而不是使用 Base64.encode() 函数。
$.ajax({
type: "POST",
url: "/download",
data: JSON.stringify(postData),
contentType: "application/json",
encode: true,
})
.done(function (data) {
window.open("data:application/pdf;base64," + btoa(data));
})
.fail(function (err) {
$('.toast-header strong').html('Download Error');
$('.toast-body').html('An error occurred while downloading the file.');
let toast = new bootstrap.Toast($('#liveToast'));
toast.show();
});