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

Azure Blob Storage V2不再提供内容处置标头,azure,azure-storage,azure-storage-blobs,content-disposition,Azure,Azure Storage,Azure Storage Blobs,Content Disposition,我对Azure Blog Storage V2中文件的“内容处置”blob属性有疑问 我使用Azure Portal中的Azure Storage Explorer 1.6.2(请参见屏幕截图)asn将我的文件howto-201901.pdf的此属性配置为“附件;文件名=howto.pdf”。该属性在文件中设置,但在下载时未作为标题信息提供 对于以前的存储V1,它没有问题。如果我下载了howto-2010901.pdf文件,是否设置了http头内容配置,并且浏览器下载了与我的配置howto-pd

我对Azure Blog Storage V2中文件的“内容处置”blob属性有疑问

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

对于以前的存储V1,它没有问题。如果我下载了howto-2010901.pdf文件,是否设置了http头内容配置,并且浏览器下载了与我的配置howto-pdf类似的文件

但从2到3个月,可能从我升级到storage V2开始,这个功能就不起作用了。浏览器将下载具有原始名称的文件

有没有人,谁有我的信息来解决这种行为

最佳蒂诺酒店


这是一个可能的解决方案,对我来说很有效

您可以从blob存储中获取现有策略,而不是创建新策略。看


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


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

当下载URL未经身份验证时,不会发送响应中的内容处置标题。让客户端接收内容处置

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

  • 我找到了这种行为的原因和解决办法。我猜,如果url没有SAS令牌,那么将不再设置内容处置http头信息。添加SAS令牌,您将获胜。
        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;
        }