【问题标题】:Azure blob, controlling filename on downloadAzure blob,在下载时控制文件名
【发布时间】:2017-01-08 18:07:23
【问题描述】:

我们的应用程序允许用户通过网络浏览器上传文件。文件名映射到 GUID,并且 blob 名称成为 GUID。当用户在我们的应用程序中单击文件时,它应该使用原始文件名而不是 GUID blob 名称下载到他们的文件系统(显示另存为等)。

我找到了这篇文章,以及描述通过共享访问签名下载时如何在 blob 上设置 Content-Disposition 的类似文章。

Friendly filename when public download Azure blob

但是,我们的情况有点不同。我们在容器级别设置了一个 SAS(从技术上讲,我相信这称为共享访问策略——在任何给定时间最多可以有 5 个)。下载 blob 时,我们只需将 SAS 附加到 uri 的末尾,然后使用...

window.location.href = blobUri + containerSAS;

...下载 blob。这会下载 blob,但使用 GUID 文件名。

我们如何获取适用于容器的现有 SAS 并将 blob 下载作为原始文件名?

请记住,这与应用于单个 blob 的 SAS 的用例略有不同...

  1. SAS 处于容器级别(与每个 blob 的单个 SAS 相比,这似乎是最佳实践)。
  2. 我们正在从 javascript 下载(与您可以设置标头的 C# 代码相比)。

我曾尝试在上传过程(PUT 操作)期间设置 blob 的 Content-Disposition,但下载 blob 时似乎没有任何区别。下面,您可以看到为 PUT 请求设置的 Content-Disposition 标头(来自 Fiddler)。

谢谢!

【问题讨论】:

  • 您是否可以使用容器访问策略在 blob 上生成 SAS,还是必须使用容器 SAS 令牌?

标签: azure azure-blob-storage


【解决方案1】:

我有一个解决方案。我认为这更像是一种解决方法,但是对于要下载的每个文件,我都会进行服务器调用并为下载操作创建一个特殊的 SAS。我可以用它设置 Content-Disposition,现在名为 blob 的 GUID 正在使用它们的原始文件名下载。

【讨论】:

    猜你喜欢
    • 2016-10-10
    • 1970-01-01
    • 2017-07-31
    • 2011-10-25
    • 2017-08-20
    • 2011-10-08
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多