加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 从azure云存储下载大文件的最佳方式

发布时间:2020-12-16 06:58:32 所属栏目:asp.Net 来源:网络整理
导读:我有一个运行在azure中的MVC Web应用程序,可以提供存储在云存储中的大型文件,如mp3,pdf等.提供这些文件的最佳方式是什么,因此用户可以在点击链接/按钮时下载它们? 简单的方法就是向他们展示: a href =“... blob.core.windows.net/container/file.mp3”u
我有一个运行在azure中的MVC Web应用程序,可以提供存储在云存储中的大型文件,如mp3,pdf等.提供这些文件的最佳方式是什么,因此用户可以在点击链接/按钮时下载它们?

简单的方法就是向他们展示:

< a href =“... blob.core.windows.net/container/file.mp3”u0026gt;

但是用户必须右键单击才能下载.

要强制下载,您可以返回File ActionResult:

public ActionResult GetPDF( string filename )
{
    return File( filename,"application/pdf",Server.HtmlEncode( filename ) );
}

这个(我认为)的缺点是webrole必须读入文件并将它们输出到流,这将消耗资源,并可能使许多用户陷入困境.而简单的href链接解决方案基本上放弃了工作,因此浏览器直接与云存储对话.

我对么?我应该关注webrole上的额外工作吗?

是否有另一种强制文件下载的方法而不会给webrole带来负担?

更新:

所以我最终做的是使用Content-Type“binary / octet-stream”上传mp3 – 这似乎强制下载提示.不确定这是不是一个好习惯,但它到目前为止是有效的.

解决方法

您的假设是正确的,如果您想使用ActionResult,您需要先将文件下载到Web角色,然后将其流式传输到客户端.如果你想要避免这种情况,尤其是大文件,并将其留给Azure存储,因为微软必须担心处理请求,如果你获得大量流量,你不必为更多的网络角色付费.

如果您托管的所有文件都是公共的,那么这很有效,但如果您想要保护文件,则会变得有点棘手(如果您想要这样做,请查看shared access signatures).

您是否尝试在blob上设置内容类型?根据您将文件上传到blob存储的方式,可能无法设置它们.如果您通过自己的代码上传blob,可以通过CloudBlob.Attributes.Properties.ContentType(从MSDN开始)访问它

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读