【问题标题】:Getting an MD5 of a remote file blob in Azure node js SDK在 Azure 节点 js SDK 中获取远程文件 blob 的 MD5
【发布时间】:2013-09-05 21:46:34
【问题描述】:

我正在编写一个备份脚本,它将提取我们 Windows Azure blob 存储中特定 blob 容器中每个文件的完整副本。这些文件不是我上传的,我只是在写一个遍历blob存储并下载文件的脚本。 为了加快这个过程并跳过不必要的下载,我想在下载文件之前请求文件的 MD5,并将它们与已经本地的文件进行比较。

我的问题:我在任何地方都找不到详细说明如何执行此操作的文档。我很确定 API 支持它,我到处寻找文档并回答与其他语言相关的问题,但不适用于 Node.js Azure SDK。

我的问题:在下载之前,是否可以通过 Azure Node.js SDK 为远程文件 blob 请求 MD5,如果可以,如何?它是否比下载文件更快?

【问题讨论】:

  • Azure API 没有定义 MD5 支持,因为散列是 Node 核心 API 的一部分。 nodejs.org/api/crypto.html。具体来说,crypto.createHash().
  • @JonathanLonowski 那是客户端,我想在服务器端检索 blob 的哈希,而不下载 blob。 Afaik 应该有可用于服务器端 blob 的 MD5 元数据,我已经在 REST、Java 和 C# 示例中看到了它。
  • 也就是说,我想在客户端检索服务器端blob的MD5,与本地文件进行比较。

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


【解决方案1】:

当然可以得到 blob 的 MD5 哈希值。列出 blob 时,您将在 blob 的属性中获得 MD5。请看下面的示例代码:

var azure = require('azure');
var blobService = azure.createBlobService("accountname", "accountkey");

blobService.listBlobs("containername", function(error, blobs){
    if(!error){
        for(var index in blobs){
            console.log(blobs[index].name );
            console.log(blobs[index].properties['content-md5'] );
        }
    }
});

显然,问题是 blob 应该设置此属性。如果未设置此属性,则返回一个空字符串。

【讨论】:

  • 我的英雄!这正是我想要的! whaddya 知道,blob 已经正确上传了 MD5 集!找了一天,怎么找到的? Windows Azure 文档相当......准系统,我只能找到操作指南等。
  • 谢谢(脸红:))!不确定您是否知道这一点,但用于 node.js SDK 的源代码可在 Github 上找到:github.com/WindowsAzure/azure-sdk-for-node。只是在这里使用“如何指导”破解了一些代码:windowsazure.com/en-us/develop/nodejs/how-to-guides/…
猜你喜欢
  • 2011-01-19
  • 2012-06-12
  • 2015-12-26
  • 2018-11-20
  • 2019-01-12
  • 2019-03-22
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多