我有一个图像转换为base64,我正在尝试使用createblockblobfromtext上载到我的azure blob存储。

self.blobServer.createBlockBlobFromText(containerName, fileName, baseStrChars, { contentSettings: { contentType: 'image/jpeg' } }, function(error, result, response) {
     if (error) {
         console.log(error);
     }
     console.log("result", result);
     console.log("response", response);
});

我的新jpeg图像出现在blob存储容器中,但当我转到blob图像url时,总是会得到this
我的容器的访问策略设置为container,我将base64字符串粘贴到base64到图像转换器,然后出现正确的图像。问题似乎是我创建blob的方式,而不是base64字符串。
我很困惑为什么整个流程看起来都在工作,但当我转到url时,图像仍然是破碎的。有什么想法吗?

最佳答案

要通过浏览器中的url直接访问图像,需要二进制内容。您可以在node.js后端将base64编码的字符串转换为二进制缓冲区,并将缓冲区字符串上载到azure存储。
请尝试以下代码段:

var rawdata = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
var matches = rawdata.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/);
var type = matches[1];
var buffer = new Buffer(matches[2], 'base64');

blobsrv.createBlockBlobFromText('mycontainer','profile-pic-123.jpg', buffer, {contentType:type}, function(error, result, response) {
        if (error) {
            console.log(error);
        }else{
         console.log(result)
        }
    });

关于node.js - 成功将base64镜像保存到Azure Blob存储,但Blob镜像始终损坏/白色小框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39582878/

10-12 14:18
查看更多