1

我正在尝试将图像上传到天蓝色存储,如下所示:

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”的文本文件,它会很好地上传,但是如果我尝试上传像图像这样的东西,它似乎会损坏,差异会在文件上传到 azure(左)之后和之前显示已上传:https ://user-images.githubusercontent.com/2121021/35678518-cb006af4-07a7-11e8-963d-2bb8b45aba26.png

我不确定到底发生了什么,并且一直在尝试解决这个问题......

4

1 回答 1

0

好吧,当您通过对象接收二进制数据时,您需要设置responseType为。arraybufferXMLHttpRequest

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();
于 2018-02-12T09:44:56.337 回答