Azure Blob存储哈希不匹配(完整性检查失败)

我正在关注http://willi.am/blog/2014/07/03/azure-blob-storage-and-node-downloading-blobs/ 。

但是,尽pipe代码完全相同,但是当我下载Blob时,Azure会给出错误:

[错误:哈希不匹配(完整性检查失败),期望值是…]

正在运行的行是blobService.getBlobToText,其中blobService是与Azure的连接(createBlobService …)

这是怎么回事? :S

我的代码如下:

// Azure test function downloadImageAsText(blobService, containerName, blobName) { blobService.getBlobToText( containerName, blobName, function(err, blobContent, blob) { if (err) { console.error("Couldn't download blob %s", blobName); console.error(err); } else { console.log("Sucessfully downloaded blob %s", blobName); console.log(blobContent); } }); } function uploadImage(blobService, containerName, blobName, fileName) { blobService.getBlobProperties( containerName, blobName, function(err, properties, status) { if (status.isSuccessful) { // Blob exists } else { blobService.createBlockBlobFromLocalFile( containerName, blobName, fileName, function(error, result, response){ if(error){ console.log("Couldn't upload file %s", fileName); console.error(error); } else { console.log('File %s uploaded successfully', fileName); downloadImageAsText(blobService, containerName, blobName); } }); } }); } function testAzure() { accountName / hash = my details var storage = require('azure-storage'); var blobService = storage.createBlobService(accountName, hash); var containerName = 'tst'; var blobName = 'test.png'; var fileName = 'test.png'; blobService.createContainerIfNotExists(containerName, function(err, result, response) { if (err) { console.log("Couldn't create container %s", containerName); console.error(err); } else { if (result) { console.log('Container %s created', containerName); uploadImage(blobService, containerName, blobName, fileName); } else { console.log('Container %s already exists', containerName); uploadImage(blobService, containerName, blobName, fileName); } } }); } function startServer() { http = require('http'); const PORT = 8080; var server = http.createServer(handleRequest); server.on('listening',function(){ console.log("Server listening on: http://178.62.117.207:%s", PORT); }); server.listen(PORT); } startServer(); testAzure(); 

这可能会发生,因为许多内部MD5检查失败,使用HTTPS时工作不同。 你可以请尝试指定您的存储帐户为https? 喜欢 –

var blobService = storage.createBlobServiceAnonymous(' https://MyAccountXX.blob.core.windows.net/ ');

否则,对于我来说,这个下载function工作正常。

作为参考,你可以尝试下面的实际文档 – https://azure.microsoft.com/en-in/documentation/articles/storage-nodejs-how-to-use-blob-storage/

尝试如下所示(修改您提到的博客文章中的代码):

 var blobName = 'my-awesome-text-blob'; blobService.getBlobToText( containerName, blobName, {'disableContentMD5Validation': true }, function(err, blobContent, blob) { if (err) { console.error("Couldn't download blob %s", blobName); console.error(err); } else { console.log("Sucessfully downloaded blob %s", blobName); console.log(blobContent); } }); 

看看这是否有帮助。

我最近自己遇到了这个问题。 不知何故,npm -install azure-storage -g帮助了它。 可能是因为在npm上更新了软件包,并且md5的计算已经改变了。 一旦我更新了azure色的存储包,一切都像一个魅力。

如果有人遇到这种情况; 当你存储一个Buffer对象但是检索一个string时会发生。