下载 – 使用ASP.Net Webapi流式传输大图像
发布时间:2020-12-15 23:41:55 所属栏目:asp.Net 来源:网络整理
导读:我们正在尝试使用ASP.Net WebApi返回大图像文件,并使用以下代码将字节流传输给客户端. public class RetrieveAssetController : ApiController{ // GET api/retrieveasset/5 public HttpResponseMessage GetAsset(int id) { HttpResponseMessage httpRespons
我们正在尝试使用ASP.Net WebApi返回大图像文件,并使用以下代码将字节流传输给客户端.
public class RetrieveAssetController : ApiController { // GET api/retrieveasset/5 public HttpResponseMessage GetAsset(int id) { HttpResponseMessage httpResponseMessage = new HttpResponseMessage(); string filePath = "SomeImageFile.jpg"; MemoryStream memoryStream = new MemoryStream(); FileStream file = new FileStream(filePath,FileMode.Open,FileAccess.Read); byte[] bytes = new byte[file.Length]; file.Read(bytes,(int)file.Length); memoryStream.Write(bytes,(int)file.Length); file.Close(); httpResponseMessage.Content = new ByteArrayContent(memoryStream.ToArray()); httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); httpResponseMessage.StatusCode = HttpStatusCode.OK; return httpResponseMessage; } } 上面的代码工作正常,但我们处理的一些文件可能是2 GB和更大的大小导致连接超时.我们以前使用过的代码(使用HttpHandlers)来响应响应流来保持连接的成功. byte[] b = new byte[this.BufferChunkSize]; int byteCountRead = 0; while ((byteCountRead = stream.Read(b,b.Length)) > 0) { if (!response.IsClientConnected) break; response.OutputStream.Write(b,byteCountRead); response.Flush(); } 我们如何使用类似的技术使用前面显示的新的WebAPI编程模型? 先谢谢你 解决方法
是的,您可以使用PushStreamContent.如果将它与异步执行(即异步lambdas)组合在一起,您可能会获得更有效的结果.
我在本月初 – http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/发表了关于这种做法的博客. 这个例子使用了一个视频文件,其原理是一样的 – 把数据的数据推下给客户端. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 在.NET 4上发现“有潜在危险的Request.Path ……
- asp.net-mvc-3 – 无法加载文件或程序集’StructureMap,Ver
- asp.net – 如何使用转换语法更改web.config设置?
- asp.net – Web API服务 – 如何在异步任务中使用“HttpCon
- ASP.NET MVC中的asp.net-mvc – 文件大小上传限制:web.con
- 使用WebAPI进行RESTFul身份验证
- asp.net-mvc – Identity Server 3 – 客户端应用程序未知或
- asp.net-mvc-3 – 当用户需要再次登录时,Ajax.ActionLink返
- ASP.Net缓存共享
- asp.net – 以编程方式在ASPX页面中设置’visible’属性的值
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC:CSS文件存在时返回
- asp.net – 什么是建议替代常见的破坏app_offlin
- asp.net – 如何使用ReportService2010命名空间呈
- asp.net – 在gridview中显示2位小数位数
- asp.net – 在MVC 4.0中使用部分视图中的节
- 如何在ASP.NET中跟踪完成的文件下载
- asp.net-mvc-4 – MVC4捆绑GZIP和头文件
- 简单探讨一下.NET Core 3.0使用AspectCore的新姿
- asp.net-mvc-3 – Ninject和OnePerRequestModule
- asp.net – 在不安装的情况下部署Expression Enc
热点阅读