从 Blob Azure 下载重定向错误
Posted
技术标签:
【中文标题】从 Blob Azure 下载重定向错误【英文标题】:Downloading from Blob Azure redirects wrong 【发布时间】:2017-08-20 06:05:01 【问题描述】:当我按下下载并调用这个动作时,我得到了结果
您要查找的资源已被删除,有它的名字 已更改,或暂时不可用。
并定向到
http://integratedproject20170322032906.azurewebsites.net/MyDocumentUps/Download/2020Resume.pdf
为什么它链接到上面而不是链接到
https://filestorageideagen.blob.core.windows.net/documentuploader/2020Resume.pdf
如控制器所示?
这是我在视图中的操作链接
@html.ActionLink("Download", "Download", "MyDocumentUps", new id = item.DocumentId.ToString() + item.RevisionId.ToString() + item.Attachment ,新的 target="_blank") |
public ActionResult Download(string id)
string path = @"https://filestorageideagen.blob.core.windows.net/documentuploader/";
return View(path + id);
【问题讨论】:
【参考方案1】:我可以想到 2 种方法可以在客户端浏览器中强制下载文件。
Return a
FileResultor
FileStreamResultfrom your controller
。这是一个这样做的例子:How can I present a file for download from an MVC controller?。请注意,这将首先在您的服务器上下载文件,然后从那里将内容流式传输到客户端浏览器。对于较小的文件/低负载,这种方法可能有效,但随着您的网站增长或要下载的文件变得更大,它会给您的网络服务器带来更大的压力。
Use a Shared Access Signature (SAS) for the blob with Content-Disposition response header set
。在这种方法中,您只需为要下载的 blob 创建一个 SAS 令牌,并使用它创建一个 SAS URL。您的控制器将简单地返回带有此 URL 的 RedirectResult
。这种方法的优点是所有下载都直接从 Azure 存储进行,而不是通过您的服务器。
在创建 SAS 时,请确保
您在 SAS 中至少拥有Read
权限。
Content-Disposition 标头在 SAS 中被覆盖。
SAS 的到期时间应该足以下载文件。
这是创建共享访问签名的示例代码。
var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
, new SharedAccessBlobHeaders()
ContentDisposition = "attachment;filename=" + blob.Name
);
var blobUrl = string.Format("01", blob.Uri.AbsoluteUri, sasToken);
return Redirect(blobUrl);
附:在我回答问题时,问题已被编辑,因此答案可能看起来有点不合时宜:) :)。
【讨论】:
【参考方案2】:鉴于您将图片网址作为 Model
的一部分,并且 blob 没有任何限制:
<img src=@Model.YourImageUri>
var image = new BitmapImage(new Uri("https://your_storage_account_name.blob.core.windows.net/your_container/your_image.jpg"));
【讨论】:
你在说什么,图片网址? 当您将文件(例如图像)保存到 blob 存储时,您会获得保存文件的 url,您可以使用它来访问您的图像.. 网址保存在哪里? 更详细的有用文章:docs.microsoft.com/en-us/azure/storage/… 您提供的链接几乎就是我所拥有的,并且比我已经知道的不再解释以上是关于从 Blob Azure 下载重定向错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Microsoft Azure 存档 Blob 中重定向状态 404