2016-08-24 3 views
0

У меня есть следующий код, который receives blob's data от Azure Storage:Правильно декодировать Получить строку данных Blob в ArrayBuffer

$.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? или я использую неправильную кодировку (я пробовал utf-8, utf-16, utf-32) при конвертации с TextEncoder?

Пожалуйста, помогите :(

+0

Это помогает? Http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/ – romuleald

+0

Он не закодирован в base64 ... Это как если бы вы открыли двоичный файл с Текстовый редактор. – shlatchz

ответ

1

Что, наконец, работал для меня, чтобы использовать эту 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) { } 
}); 

Хотелось бы надеяться, что это поможет другим людям, а также ...

Смежные вопросы