上传后,Azure存储是否正在破坏文件?

时间:2018-02-02 05:52:05

标签: javascript azure azure-storage azure-storage-blobs azure-node-sdk

我正在尝试将图像上传到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'这样简单的文本文件就可以上传,但是如果我尝试上传类似图像的内容似乎已经损坏,那么差异显示文件上传到azure后(左)在上传之前:https://user-images.githubusercontent.com/2121021/35678518-cb006af4-07a7-11e8-963d-2bb8b45aba26.png

我不确定究竟发生了什么,并且一直试图解决这个问题......

1 个答案:

答案 0 :(得分:0)

当您通过arraybuffer对象接收二进制数据时,您需要将responseType设置为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();