gpt4 book ai didi

c# - 使用 SAS 将文件从 Azure Blob 存储下载到浏览器

转载 作者:行者123 更新时间:2023-12-05 06:52:51 24 4
gpt4 key购买 nike

在我的 DownloadFile 页面的 Page_Load 方法中,从查询字符串中检索用户希望下载的文件名。该文件托管在 Azure Blob 存储帐户中。我尝试通过以下方法使用共享访问签名 (SAS) 下载文件:

var containerName = "containerName";
var con = "connectionString";
CloudStorageAccount account = CloudStorageAccount.Parse(con);

var blobClient = account.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
var blob = container.GetBlockBlobReference("file.pdf");
var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10),
}, new SharedAccessBlobHeaders()
{
ContentDisposition = "attachment; filename=file.pdf"
});

var blobUrl = string.Format("{0}{1}", blob.Uri.AbsoluteUri, sasToken);
Response.Redirect(blobUrl);

但是,这不会下载文件。相反,浏览器只显示文件的乱码字符流:

Garbled Characters

blobUrl 似乎有效。但 Response.Redirect 未按预期工作。我做错了什么吗?

注意:我使用的是 WebForms(不幸的是),不是 MVC

最佳答案

我能够通过使用 iframe 找到解决方法。如果我添加 iframe到页面:

<iframe id="iframeFile" runat="server" style="display:none;"></iframe>

然后在代码文件中设置源:

iframeFile.Src = blobUrl;

它下载文件。

这可能并不理想,我仍然不确定为什么Response.Redirect没有按预期工作。所以我当然也愿意接受其他建议。但此解决方法确实解决了无法下载文件的问题。

关于c# - 使用 SAS 将文件从 Azure Blob 存储下载到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65895307/

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