从 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 aFileResultorFileStreamResultfrom 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

将 Azure 日志重定向到特定的日志服务

下载按钮重定向到错误页面

在 Azure CDN 标准 Verizon 中从 HTTP 重定向到 HTTPS

URL重定向不工作的Android Azure的B2C

Azure 网站重定向循环