Azure blob,在下载时控制文件名

时间:2016-09-01 02:07:25

标签: azure azure-blob-storage

我们的应用程序使用户可以通过Web浏览器上传文件。文件名将映射到GUID,blob名称将成为GUID。当用户在我们的应用程序中单击该文件时,它应该使用原始文件名而不是GUID blob名称下载到他们的文件系统(show save as等)。

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

Friendly filename when public download Azure blob

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

window.location.href = blobUri + containerSAS;

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

我们如何才能采用适用于Container的现有SAS并将blob下载作为原始文件名?

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

  1. SAS处于容器级别(对于每个blob而言,这似乎是针对单个SAS的最佳实践)。
  2. 我们正在从javascript下载(与可以设置标题的C#代码相比)。
  3. 我试图在上传过程中设置blob的Content-Disposition(PUT操作),但是当我下载blob时它似乎没有什么区别。下面,您可以看到为PUT请求设置的Content-Disposition标头(来自Fiddler)。

    enter image description here

    谢谢!

1 个答案:

答案 0 :(得分:1)

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