javascript - 正确解码 Get Blob 数据字符串到 ArrayBuffer

标签 javascript jquery binary azure-storage

我有以下代码 receives blob's data来自 Azure 存储:

$.ajax({
        headers: {
            'x-ms-range': 'bytes=' + from + '-' + to,
            'x-ms-version': '2015-07-08',
            'x-ms-client-request-id': guid()
        },
        url: uri,
        type: "GET",
        success: function (data) {
            /* data is a string! */
        },
        error: function (error, textStatus) { }
});

通话工作正常,我收到了文本形式的数据。 问题是我需要将其转换为 ArrayBuffer

现在我尝试了很多方法,例如:

new TextEncoder().encode(data);

以及以下转换器:

function stringToUint(string) {
    var charList = string.split(''),
    uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint16Array(uintArray);
}

但是数据字符串没有正确转换为二进制(我已经检查了 blob 的真实二进制值)。

我应该使用不同的ArrayBuffer类型吗?或者我在使用 TextEncoder 进行转换时使用了错误的编码(我尝试过 utf-8、utf-16、utf-32)?

请帮忙:(

最佳答案

最终对我有用的是使用这个 jquery extension 并将请求更改为:

$.ajax({
        headers: {
            'x-ms-range': 'bytes=' + from + '-' + to,
            'x-ms-version': '2015-07-08',
            'x-ms-client-request-id': guid()
        },
        url: uri,
        type: "GET",
        dataType: 'binary',
        responseType:'arraybuffer',
        processData: false,
        success: function (data) {
            /* data is an arraybuffer! */
        },
        error: function (error, textStatus) { }
});

希望它也能帮助其他人......

关于javascript - 正确解码 Get Blob 数据字符串到 ArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127644/

相关文章:

javascript - 在 Vue 项目中包含或初始化 jQuery 库的最佳方法是什么?

javascript - 解析云代码增量问题

javascript - 如何通过for循环将项目分成3列?

javascript - 如何在酒精和饮料配方页面上管理与年龄门相关的逻辑?

javascript - setInterval 无法正常工作

javascript - 如何在javascript中设置弹出文本的格式?

jquery - 交叉淡入淡出动画

algorithm - 在 int 中找到第 n 个 SET 位

c - 给定一个字节,从二进制中确定一个特定值

assembly - 二进制减法,进位位未设置?