Azure Blob 存储 V2 不再提供内容处置标头

use*_*131 8 azure content-disposition azure-storage azure-blob-storage

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

我在 Azure 门户中使用 Azure 存储资源管理器 1.6.2(参见屏幕截图)asn 将文件 howto-201901.pdf 的此属性配置为“attachment; filename=howto.pdf”。该属性在文件中设置,但在下载时不作为标头信息提供。

用以前的存储V1,是没有问题的。如果我下载了文件 howto-2010901.pdf,则 http 标头内容处置已设置,并且浏览器下载了该文件,就像我的配置 howto-pdf 一样。

但自从两三个月以来,也许自从我升级到存储 V2 以来,这个功能就不起作用了。浏览器以原始名称下载文件。

有没有人有信息可以帮助我解决这种行为?

最佳蒂诺

在此输入图像描述

Vik*_*kas 5

当下载 URL 未经身份验证时,不会发送响应中的Content-Disposition标头。供客户端接收Content-Disposition

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


use*_*131 1

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

您是否可以从 Blob 存储中获取现有策略,而不是创建新策略。请参阅https://learn.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;
    }
Run Code Online (Sandbox Code Playgroud)