【问题标题】:How to check whether Azure Blob Storage upload was successful?如何检查 Azure Blob 存储上传是否成功?
【发布时间】:2017-11-07 19:36:41
【问题描述】:

我正在使用 Azure SAS URL 将文件上传到 Blob 存储:

var blockBlob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
blockBlob.UploadFromFile(filePath);

该文件存在于我的磁盘上,并且 URL 应该是正确的,因为它是从 Windows Store Ingestion API 自动检索的(并且,如果我稍微更改 URL 签名部分中的一个字符,则上传失败并显示 HTTP 403)。

但是,当检查时

var blobs = blockBlob.Container.ListBlobs();

结果是Count = 0,请问上传成功了吗?不幸的是,UploadFromFile 方法(类似于UploadFromStream 方法)没有返回类型,所以我不确定如何检索上传的结果。

如果我尝试使用 Azure Storage Explorer 连接到 SAS URL,列出 blob 容器失败并出现错误“身份验证错误。签名字段格式不正确”。我尝试了 URL 转义 URL 的签名部分,因为这似乎是在某些类似情况下出现该错误的原因,但这并不能解决问题。

有没有办法检查 blob 上传的状态?有谁知道为什么无法使用 Azure Explorer 连接到自动生成的 URL(由 Microsoft 的官方 API 之一提供)?

【问题讨论】:

    标签: azure-storage azure-blob-storage


    【解决方案1】:

    请检查您的 SAS 的 sp 字段。它显示了您有权对 blob 执行的操作。例如,sp=rw 表示您可以使用此 SAS 读取 blob 并将内容写入 blob。 sp=w 表示您只能使用此 SAS 将内容写入 blob。

    如果您有阅读权限,您可以将 SAS URL 复制到浏览器地址栏。浏览器将为您下载或显示 Blob 内容。

    有什么方法可以检查 blob 上传的状态吗?

    如果您的代码没有抛出异常,则表示该 blob 已成功上传。否则会抛出异常。

    try
    {
        blockBlob.UploadFromFile(filePath);
    }
    catch(Exception ex)
    {
        //uploaded failed
    }
    

    您还可以使用任何 Web 调试代理工具(例如 Fiddler)来确认它以从存储服务器捕获响应消息。 201 如果blob上传成功,将返回已创建状态码。

    有人知道为什么无法使用 Azure Explorer 连接自动生成的 URL(由 Microsoft 的官方 API 之一提供)吗?

    Azure 存储资源管理器仅允许我们使用 SAS 连接存储帐户或使用 SAS 附加存储服务(blob 容器、队列或表)。它不允许我们使用 SAS 连接 blob 项。

    【讨论】:

    • 谢谢 - 不知道我们可以简单地在浏览器中打开 SAS URL!
    【解决方案2】:

    在同步上传的情况下,我们可以尝试基于异常的方法,也可以交叉检查“blockBlob.Properties.Length”。上传文件前为“-1”,上传完成后变为上传文件的大小。

    所以我们可以添加检查,以验证块长度,这将提供有关上传状态的详细信息。

    try
    {
        blockBlob.UploadFromFile(filePath);
        if(blockBlob.Properties.Length >= 0)
        {
           // File uploaded successfull
           // You can take any action.
        }
    }
    catch(Exception ex)
    {
        //uploaded failed
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 2011-02-08
      • 2022-01-15
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 2012-06-17
      相关资源
      最近更新 更多