使用 ajax 时没有从文本到数组缓冲区的转换

No conversion from text to arraybuffer when using ajax

本文关键字:数组 缓冲区 转换 文本 ajax 使用      更新时间:2023-09-26

我正在尝试使用 ajax 获取文件并使用虚拟标签添加下载数据 URI。我正在使用这个lib jquery.binarytransport.js

当我尝试使用二进制或数组缓冲区选项获取 pptx 文档时:

$.get(url, function(data) {
    var dataURI = 'data:application/octet-stream;base64,' + btoa(data);
}, 'binary');

$.get(url, function(data) {
    var dataURI = 'data:application/octet-stream;base64,' + btoa(data);
}, 'arraybuffer');

我有错误"No conversion from text to binary"或者"No conversion from text to arraybuffer" blob 发生同样的情况。

当我将类型设置为文本时,当我在响应上使用 btoa 函数时出现错误:"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range."

有人知道如何解决这个问题吗?

我已经通过使用文本作为 responseType 并使用这个函数来解决这个问题:

function base64(buffer) {
    var binary = '';
    var bytes = new Uint8Array(buffer);
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
}