У меня есть следующий код, который 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?
Пожалуйста, помогите :(
Это помогает? Http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/ – romuleald
Он не закодирован в base64 ... Это как если бы вы открыли двоичный файл с Текстовый редактор. – shlatchz