Azure blob,在下载时控制文件名
Azure blob, controlling filename on download
我们的应用程序允许用户通过网络浏览器上传文件。文件名映射到 GUID,blob 名称成为 GUID。当用户在我们的应用程序中单击文件时,它应该使用原始文件名而不是 GUID blob 名称下载到他们的文件系统(显示另存为等)。
我发现了这个 post 和类似的 post 描述了如何在通过共享访问签名下载时在 blob 上设置 Content-Disposition。
Friendly filename when public download Azure blob
但是,我们的情况有点不同。我们在容器级别设置了一个 SAS(我相信这在技术上称为共享访问策略——在任何给定时间您最多可以有 5 个)。下载 blob 时,我们只需将 SAS 附加到 uri 的末尾,然后使用...
window.location.href = blobUri + containerSAS;
...下载 blob。这将下载 blob,但使用 GUID 文件名。
我们如何将适用于 Container 的现有 SAS 作为原始文件名下载 blob?
请记住,这与应用于单个 blob 的 SAS 的用例略有不同,因为...
- SAS 处于容器级别(与每个 blob 的单个 SAS 相比,这似乎是最佳实践)。
- 我们正在从 javascript 下载(相对于您可以设置 header 的 C# 代码)。
我尝试在上传过程中(PUT 操作)设置 blob 的 Content-Disposition,但是当我下载 blob 时似乎没有什么不同。在下面,您可以看到为 PUT 请求(来自 Fiddler)设置了 Content-Disposition header。
谢谢!
我有办法。我认为这更像是一种解决方法,但对于每个要下载的文件,我都会调用服务器并为下载操作创建一个特殊的 SAS。我可以用它设置 Content-Disposition,现在 GUID 命名的 blob 正在使用它们的原始文件名下载。
我们的应用程序允许用户通过网络浏览器上传文件。文件名映射到 GUID,blob 名称成为 GUID。当用户在我们的应用程序中单击文件时,它应该使用原始文件名而不是 GUID blob 名称下载到他们的文件系统(显示另存为等)。
我发现了这个 post 和类似的 post 描述了如何在通过共享访问签名下载时在 blob 上设置 Content-Disposition。
Friendly filename when public download Azure blob
但是,我们的情况有点不同。我们在容器级别设置了一个 SAS(我相信这在技术上称为共享访问策略——在任何给定时间您最多可以有 5 个)。下载 blob 时,我们只需将 SAS 附加到 uri 的末尾,然后使用...
window.location.href = blobUri + containerSAS;
...下载 blob。这将下载 blob,但使用 GUID 文件名。
我们如何将适用于 Container 的现有 SAS 作为原始文件名下载 blob?
请记住,这与应用于单个 blob 的 SAS 的用例略有不同,因为...
- SAS 处于容器级别(与每个 blob 的单个 SAS 相比,这似乎是最佳实践)。
- 我们正在从 javascript 下载(相对于您可以设置 header 的 C# 代码)。
我尝试在上传过程中(PUT 操作)设置 blob 的 Content-Disposition,但是当我下载 blob 时似乎没有什么不同。在下面,您可以看到为 PUT 请求(来自 Fiddler)设置了 Content-Disposition header。
谢谢!
我有办法。我认为这更像是一种解决方法,但对于每个要下载的文件,我都会调用服务器并为下载操作创建一个特殊的 SAS。我可以用它设置 Content-Disposition,现在 GUID 命名的 blob 正在使用它们的原始文件名下载。