asp.net-mvc – 从azure云存储下载大文件的最佳方式
我有一个运行在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开始)访问它 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- entity-framework – ASP.NET Web API中DbContext的推荐生命
- asp.net-mvc – 测试使用DbContext的存储库的最佳方法
- .net – VBPROJ / CSPROJ
- 如何在ASP.NET MVC 4 Beta中禁用Javascript/CSS缩小
- asp.net – 强制按钮控制在回发之前运行其客户端
- asp.net – 无法为Elmah配置邮件
- asp-classic – IE7经典ASP缓存
- asp.net-mvc – 如何测试ASP.NET MVC 3中的RenderSection中
- asp.net-mvc – 如何使用Html.BeginForm设置FormMethod.Get
- Asp.Net Identity发现用户不在角色中
- ASP.NET / MVC 4在64位IIS 7.5服务器上捆绑和缩小
- asp.net-web-api – 使用ASP.NET MVC 6 WebAPI从
- asp.net-mvc – 从传递给局部视图的嵌套复杂对象
- asp.net-mvc – 如何在使用类型化视图时在Action
- asp.net – Microsoft JScript运行时错误:’Sys
- 什么是Asp.net中的中等信任?
- 给 asp.net core 写个中间件来记录接口耗时
- asp.net – N层和SOA架构有什么区别?
- asp.net-mvc-3 – 在脚手架视图MVC3中进行分页
- asp.net – 如何禁用viewstate的aspx页面?