Хранилище Azure портит файлы после загрузки?
Я пытаюсь загрузить изображения в хранилище Azure следующим образом:
var xhr = new XMLHttpRequest();
xhr.open("GET", blobUrl);
xhr.responseType = "text";//force the HTTP response, response-type header to be blob
xhr.onload = function () {
blobService.createBlockBlobFromText('taskcontainer', 'myblob', xhr.responseText, {contentSettings: {contentType: "image/bmp"}}, (error, result, response)=>{
})
}
xhr.send();
Если я загружаю что-то простое, например, текстовый файл с "abc", он загружается нормально, однако, если я пытаюсь загрузить что-то вроде изображения, оно кажется поврежденным, diff показывает файл после того, как он был загружен в Azure (слева) и перед ним. был загружен: https://user-images.githubusercontent.com/2121021/35678518-cb006af4-07a7-11e8-963d-2bb8b45aba26.png
Я не уверен, что именно происходит, и пытался решить это некоторое время сейчас...
1 ответ
Ну, вам нужно установить responseType
в arraybuffer
когда вы получаете двоичные данные через XMLHttpRequest
объект.
var xhr = new XMLHttpRequest();
xhr.open("GET", blobUrl);
xhr.responseType = "arraybuffer";
xhr.onload = function () {
blobService.createBlockBlobFromText('taskcontainer', 'myblob', new Uint8Array(xhr.response), {contentSettings: {contentType: "image/bmp"}}, (error, result, response) => {
})
}
xhr.send();