【问题标题】:Azure Blob Storage V2 does not deliver content-disposition header any moreAzure Blob Storage V2 不再提供内容处置标头
【发布时间】:2019-06-09 23:31:21
【问题描述】:

我对 Azure 博客存储 V2 中文件的“内容处置”blob 属性有疑问。

我在 Azure 门户中使用 Azure Storage Explorer 1.6.2(参见屏幕截图)asn 将我的文件 howto-201901.pdf 的此属性配置为“附件;文件名 = howto.pdf”。该属性已在文件中设置,但在下载时未作为标题信息提供。

用之前的存储V1,是不是没问题。如果我下载了文件howto-2010901.pdf,是否设置了http header content-disposition,并且浏览器像我的配置howto-pdf一样下载了文件。

但是自从 2 或 3 个月以来,也许自从我升级到存储 V2 之后,这个功能就不起作用了。浏览器用原名下载文件。

有没有人有信息让我解决这种行为?

最好的蒂诺

【问题讨论】:

标签: azure azure-storage azure-blob-storage content-disposition


【解决方案1】:

这是一个可能的解决方案,对我有用。

除了创建新策略之外,您还可以从 Blob 存储中获取现有策略吗?见https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1

    private Uri GetDownloadUri(CloudBlockBlob blob)
    {
        try
        {
            // Return the SAS token.
            var query = GenerateSASQueryString(blob);

            UriBuilder newUri = new UriBuilder(blob.Uri)
            {
                Query = query
            };

            return newUri.Uri;
        }
        catch (UriFormatException ex)
        {
            Console.WriteLine(ex);
        }

        return blob.Uri;
    }

    private string GenerateSASQueryString(CloudBlockBlob blob)
    {
        if (blob == null)
            return null;

        // Create a new access policy for the account.
        SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy
        {
            Permissions = SharedAccessBlobPermissions.Read,
            SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddHours(24),
            SharedAccessStartTime = DateTimeOffset.UtcNow
        };

        // Return the SAS token.
        var query = blob.GetSharedAccessSignature(policy);
        return query;
    }

【讨论】:

    【解决方案2】:

    我面临同样的问题,但我对 .NET SDK 和 SharedAccessBlobPolicy 感到非常困惑。

    我正在使用Azure.Storage.Blobs 版本12.4.1 SDK 来管理存储。是否可以使用它来设置SharedAccessBlobPolicy,或者我应该以不同的方式进行设置?我试图查看文档,但它并没有真正的帮助,我只能找到有关 Microsoft.Azure.Storage.Blob SDK 版本 11 的信息,该版本被认为是遗留的,现在已弃用。

    【讨论】:

      【解决方案3】:

      Content-Disposition 标头在下载 URL 未经过身份验证时不会发送响应。让客户接收Content-Disposition

      1. 创建访问受限的 SAS 令牌。
      2. 将其附加到 blob 下载链接。

      【讨论】:

        猜你喜欢
        • 2014-05-31
        • 2020-10-27
        • 2018-11-25
        • 2012-07-15
        • 2015-10-01
        • 2010-10-30
        • 1970-01-01
        • 2018-02-06
        • 2014-10-03
        相关资源
        最近更新 更多