【问题标题】:ASP.NET Core AzureBlob download file with rename带有重命名的 ASP.NET Core AzureBlob 下载文件
【发布时间】:2020-06-21 14:46:20
【问题描述】:

我的页面上有以下代码:

<a class="btn-default btn" href="<AzureBlobContainerUrl>/<guid>.psd" download="@Model.FileName" target="_blank">Download 
    <span class="glyphicon glyphicon-export"></span>
</a>

@Model.FileName 代表例如'MyPhotoshopFile.psd'

第一个问题: 下载的文件具有原始 GUID 作为文件名而不是例如'MyPhotoshopFile.psd'。

第二个问题: 如果文件是例如PDF,然后 Google 直接在当前浏览器选项卡中打开文件,而不是下载它。

有什么解决办法吗?

【问题讨论】:

    标签: javascript html asp.net-core azure-blob-storage


    【解决方案1】:

    对于第一个问题,尝试在 blob 上设置 Content-Disposition 属性。如果您使用的是 C# SDK,那么抓住 blob,您可以使用以下方式设置 C-D:

    blob.FetchAttributes();
    blob.Properties.ContentDisposition = string.Format("attachment;filename=\"{0}\"", yourFileName);
    blob.SetProperties();
    

    基于这个较早的问题 (Chrome Download Attribute not working),Chrome 中的“下载”属性根据 CD 的行为不同,因此明确设置可能会解决您的第二个问题。

    【讨论】:

    • 在哪里可以设置 blob.FetchAttributes();等等,我可以在哪里设置 Content-Disposition 标头?我在一个 cshtml 部分页面上。
    • @WhiteIntel,如果可能的话,最好在将 blob 添加到 Azure 存储时尝试设置 C-D。那你以后就不用担心了。如果这不可能,那么您可以在页面呈现之前执行此操作(您使用的是 MVC 还是 Razor 页面?)
    【解决方案2】:

    嗯,非常感谢您的提示! 首先,代码和您的建议不起作用(天蓝色 blos 存储服务忽略了 C-D 属性),但经过几个小时的研究,我发现了这个问题:

    • AccountKind StorageV2(通用 v2)不工作与 C-D 属性
    • AccountKind BlobStorage 正在运行没有任何问题

    我重新创建了 Blob 存储并使用了旧版 BlobStorage 帐户类型。这样,ContentDisposition 属性就可以工作了。

    【讨论】:

    • 这不是问题的答案。这更像是对 Bryan 提供的答案的评论或对问题的更新。
    • 嗯,这是我的问题的答案,因为这完全解决了我的问题。
    • 我很惊讶该解决方案不适用于 V2 帐户,但适用于 Blob 存储帐户。 Content-Disposition 属性应该适用于这两种类型的帐户。我以为你在分享你的观察,因此我发表了评论。
    • 没问题! :) 我也想知道,我们用几个测试帐户尝试过,结果相同:不工作,我这几天会把问题提交给微软
    猜你喜欢
    • 2013-02-14
    • 2019-02-12
    • 2016-11-22
    • 1970-01-01
    • 2017-12-26
    • 2014-01-29
    • 1970-01-01
    • 2011-12-29
    • 2021-03-15
    相关资源
    最近更新 更多