gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:04:15 25 4
gpt4 key购买 nike

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

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

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 下载(与您可以设置 header 的 C# 代码相比)。

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

enter image description here

谢谢!

最佳答案

这篇文章为我们指明了使用 ContentDisposition 属性 Azure.Storage.Blobs 更改文件名的正确方向

            BlobContainerClient container = OpenContianer(containerName);
BlobClient blob = container.GetBlobClient(sourceFilename);
var Builder = new BlobSasBuilder(BlobSasPermissions.Read, DateTimeOffset.Now.AddMinutes(10));
Builder.ContentDisposition= $"attachment; filename = {destFileName} ";
var SasUri = blob.GenerateSasUri(Builder);

关于Azure blob,控制下载时的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com