2

我在尝试锻炼如何列出所有容器和 blob 时遇到了困难。奇怪的是,我还没有看到一个这样做的 Coldfusion 示例。

我试过关注一个 C# 项目,但我被困在创建签名的地方。以下是到目前为止我从 C# 项目中提取的内容。

资源数组 - 这些是我想调用的一些资源

  1. restype=container&comp=list&include=snapshots&include=元数据
  2. 比较=列表
  3. 容器 + "/" + blob + "?comp=pagelist
  4. 容器 + "/" + blob + "?comp=blocklist

我从 C# 逻辑中提取的内容

<cfhttp method="GET" url="http://#arguments.storageAccount#.#variables.hostEndPoint[storageType]#?#resource[1]#">
    <cfhttpparam type="header" name="x-ms-date" value="#dateTimeString#" />
    <cfhttpparam type="header" name="x-ms-version" value="2009-09-19" />
    <cfhttpparam type="header" name="Authorization" value="??????" />
</cfhttp>

由于我不是 C# 开发人员,如果有人可以解释下面的结果是什么,我可以转换它。

MessageSignature 是否是以下值的逗号分隔列表(即 '{0}\n\n\n{1}\n{5}\n\n\n\n{2}\n\n\n\ n{3}{4},GET,,无论 ifMatch 返回什么,...')

MessageSignature = String.Format("{0}\n\n\n{1}\n{5}\n\n\n\n{2}\n\n\n\n{3}{4}",
    method,
    (method == "GET" || method == "HEAD") ? String.Empty : request.ContentLength.ToString(),
    ifMatch,
    GetCanonicalizedHeaders(request),
    GetCanonicalizedResource(request.RequestUri, StorageAccount),
    md5
);

以下示例字符串将返回什么(例如“复杂 Azure!”)

    byte[] SignatureBytes = System.Text.Encoding.UTF8.GetBytes(MessageSignature);

谢谢你。

4

3 回答 3

1

我创建了一个视频,展示如何使用 C# 访问 Azure REST API,我相信该视频可以帮助您,Java 逻辑将非常相似。

http://youtu.be/NJQzEnk2Gck?hd=1

于 2012-12-06T23:16:04.847 回答
1

不久前,我尝试使用 Coldfusion 的 REST API,但没有取得多大成功,所以我无法直接回答您的问题(我也无法获得正确的签名)。然而,微软现在完全支持使用 REST API 的Azure Java SDK,这应该可以从 Coldfusion 中使用(尽管我还没有机会尝试它——尽管我完全打算这样做)。

于 2012-11-02T02:57:40.423 回答
1

一段时间以来,我一直在追求同样的目标。

我刚刚更新到 CF 2021 以尝试解决所有这些问题。

有新的嵌入式功能可能会有所帮助:https ://helpx.adobe.com/br/coldfusion/using/integrate-coldfusion-azure-blob.html

于 2021-10-20T18:27:20.657 回答