当我按下载并调用此操作时,我会得到结果
您要查找的资源已被删除,名称已有 已更改,或暂时无法使用。
并转向
http://integratedproject20170322032906.azurewebsites.net/MyDocumentUps/Download/2020Resume.pdf
为什么它链接到上面而不是
https://filestorageideagen.blob.core.windows.net/documentuploader/2020Resume.pdf
如控制器所示?
这是我在视图中的actionlink
@ Html.ActionLink("下载","下载"," MyDocumentUps",new {id = item.DocumentId.ToString()+ item.RevisionId.ToString()+ item.Attachment},new {target =" _blank"})|
public ActionResult Download(string id)
{
string path = @"https://filestorageideagen.blob.core.windows.net/documentuploader/";
return View(path + id);
}
答案 0 :(得分:2)
我可以想出两种方法可以强制在客户端浏览器中下载文件。
Return a
{FileResult {1}} {FileStreamResult {1}} 即可。这是一个这样做的例子:How can I present a file for download from an MVC controller?。请注意,这将首先在您的服务器上下载文件,然后从那里将内容流式传输到客户端浏览器。对于较小的文件/低负载,这种方法可能有效,但随着您的网站增长或要下载的文件变得更大,它将对您的Web服务器造成更大的压力。or
即可。在这种方法中,您只需为要下载的blob创建SAS令牌,然后使用该令牌创建SAS URL。您的控制器只会使用此网址返回from your controller
。这种方法的优点是所有下载都直接从Azure存储发生,而不是通过您的服务器发生。创建SAS时,请确保
Use a Shared Access Signature (SAS) for the blob with Content-Disposition response header set
个权限。 以下是创建共享访问签名的示例代码。
RedirectResult
P.S。当我回答这个问题的时候,这个问题已经被编辑了,所以答案可能看起来有些糟糕:) :)。
答案 1 :(得分:1)
鉴于您将图片网址作为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"));