gpt4 book ai didi

javascript - Ajax 调用以 Base64 字符串形式返回 PDF 文件

转载 作者:行者123 更新时间:2023-12-03 06:44:55 25 4
gpt4 key购买 nike

我在 Angular JS 环境中使用 ajax 来调用本地文件(pdf 文件)。调用成功,但是ajax调用返回的数据是乱码(不确定我这里使用的术语是否正确,但就像使用文本编辑器打开pdf文件一样)。无论如何,我可以获得 base64 字符串的返回结果吗?

这背后的原因是与一些现有的 pdf 合并,但在此之前,我需要 pdf 的 base64 字符串。下面是我的ajax调用代码,

$.ajax({           
url : 'path/to/pdfFile.pdf',
success : function(data) {
console.log(data); //expecting base64 string here
},
error: function(xhr, textStatus, errorThrown){
console.log('request failed');
},
async : false
});

最佳答案

我成功地将pdf文件(乱码)转换为base64字符串,正确的定义应该是将二进制文件转换为base64。

以下是答案,感谢 @DaTebe 和以下引用答案:

Retrieving binary file content using Javascript, base64 encode it and reverse-decode it using Python

答案,

  1. 首先,编写两个方法来从引用的答案进行转换

    function base64Encode(str) {
    var CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var out = "", i = 0, len = str.length, c1, c2, c3;
    while (i < len) {
    c1 = str.charCodeAt(i++) & 0xff;
    if (i == len) {
    out += CHARS.charAt(c1 >> 2);
    out += CHARS.charAt((c1 & 0x3) << 4);
    out += "==";
    break;
    }
    c2 = str.charCodeAt(i++);
    if (i == len) {
    out += CHARS.charAt(c1 >> 2);
    out += CHARS.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
    out += CHARS.charAt((c2 & 0xF) << 2);
    out += "=";
    break;
    }
    c3 = str.charCodeAt(i++);
    out += CHARS.charAt(c1 >> 2);
    out += CHARS.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
    out += CHARS.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
    out += CHARS.charAt(c3 & 0x3F);
    }
    return out;
    }

    function getBinary(file){
    var xhr = new XMLHttpRequest();
    xhr.open("GET", file, false);
    xhr.overrideMimeType("text/plain; charset=x-user-defined");
    xhr.send(null);
    return xhr.responseText;
    }
  2. 要使用它,只需:

    var b = getBinary('path/to/pdfFile.pdf');
    var b64 = base64Encode(b);
    console.log(b64);

关于javascript - Ajax 调用以 Base64 字符串形式返回 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37787318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com