在我的
然而,这并没有下载文件。相反,浏览器只是显示了一个乱码字符流的文件:
注意:我正在使用 WebForms(不幸的是),而不是 MVC。
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](https://istack.dev59.com/8FSIm.webp)
blobUrl
似乎是有效的。但是,Response.Redirect
没有按预期工作。我做错了什么吗?注意:我正在使用 WebForms(不幸的是),而不是 MVC。
application/pdf
是必需的吗? - GlennResponse.Redirect
用来重定向到生成的 URL。 - JoshG