node.js - 哈希与 Azure Blob 存储不匹配(完整性检查失败)

标签 node.js azure azure-storage azure-blob-storage

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

然而,尽管代码完全相同,当我下载 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();

最佳答案

如果其他人遇到这种情况;当您存储 Buffer 对象但检索 string 时会发生这种情况。

关于node.js - 哈希与 Azure Blob 存储不匹配(完整性检查失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609691/

相关文章:

node.js - Mongoose 更新嵌入文档不起作用

Azure 存储。收到 403 [url](未启用 CORS 或未找到此请求的匹配规则。)

azure - 我们可以将 Azure 高级存储附加到多个 VM

node.js heroku - app/web.1 : Error: no template specified

node.js - 有没有办法在nodeJS POST API请求中指定本地文件系统路径,我能够使用curl进行api调用,但不能使用nodejs

node.js - NodeJS 和 Mongo - 多个用户同时发送请求时的意外行为

azure - 将 Windows 服务发布为 AZURE WEBJOB

architecture - Azure架构问题

powershell - 使用 Powershell 脚本将文件上传到 Azure Blob 存储的 Azure WebJob

Azure:存储交易成本