在ASP.NET中流文件的最佳方式
|
什么是使用ASP.NET流文件的最佳方式? 似乎有各种方法为此,我目前使用Response.TransmitFile()方法在http处理程序,它直接发送文件到浏览器。这用于各种事情,包括将FLV从webroot外部发送到嵌入式Flash视频播放器。 然而,这似乎不是一个可靠的方法。特别是,Internet Explorer(7)有一个奇怪的问题,浏览器只是在一个视频或两个视图后挂起。点击任何链接等没有任何效果,并且让网站再次工作的唯一方法是关闭浏览器并重新打开它。 这也发生在其他浏览器,但不太频繁。基于一些基本测试,我怀疑这是与文件被流式传输的方式有关 – 或许连接没有正确关闭,或者沿着这些线。 尝试了几个不同的事情后,我发现以下方法适用于我: Response.WriteFile(path); Response.Flush(); Response.Close(); Response.End(); 这解决了上述问题,并且查看视频不再导致Internet Explorer挂起。 但是,我的理解是,Response.WriteFile()首先将文件加载到内存,并且假定一些正在流传输的文件可能相当大,这似乎不是一个理想的解决方案。 我有兴趣听听其他开发人员如何在ASP.NET中流式传输大文件,特别是流式FLV视频文件。 解决方法我会把东西在“aspx”管道之外。特别是,我会写一个运行处理程序(ashx,或通过config映射),这样做最小的工作,并只是写入响应的块。处理程序将正常接受来自查询字符串/表单的输入,定位流的对象,并流式传输数据(使用循环中的中等大小的本地缓冲区)。一个简单(不完整)的示例如下所示:public void ProcessRequest(HttpContext context) {
// read input etx
context.Response.Buffer = false;
context.Response.ContentType = "text/plain";
string path = @"c:somefile.txt";
FileInfo file = new FileInfo(path);
int len = (int)file.Length,bytes;
context.Response.AppendHeader("content-length",len.ToString());
byte[] buffer = new byte[1024];
Stream outStream = context.Response.OutputStream;
using(Stream stream = File.OpenRead(path)) {
while (len > 0 && (bytes =
stream.Read(buffer,buffer.Length)) > 0)
{
outStream.Write(buffer,bytes);
len -= bytes;
}
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC4捆绑使用Scripts.Render时速度慢
- asp.net – 抛出类型“System.OutOfMemoryException”的异常
- asp.net-mvc – 什么是ASP.Net MVC查看引擎?
- asp.net-core – 在发布ASP.NET Core应用程序时自动执行迁移
- asp.net – 嵌套的Repeater和SqlDataSource参数
- 实体框架 – 具有实体框架的MVC MiniProfiler 5模型第一个错
- asp.net – IIS 7在一个服务器上引发web.config的“重复部分
- Asp.net – 空QueryString参数
- 单个ASP.net网站与多个实例和web.configs
- ASP.NET MVC中的经典ASP(C#)
- 认证和授权在ASP.NET MVC 5
- asp.net 文件上传与刷新与asp.net页面与iframe之
- asp.net-mvc – 对HTTP POST请求的正确响应是什么
- asp.net-mvc – ASP.NET MVC和LINQ一般问题
- asp.net-mvc-3 – 我应该尝试使用MVC3和ASP.net的
- 在Textbox asp.net上使用JQuery DatePicker
- asp.net – ASP:ItemTemplate中的DropDownList:
- asp.net repeater手写分页实例代码
- asp.net-mvc – 如何使ASP.NET MVC mini分析器与
- 如何从asp.net中的客户端网络摄像头捕获图像
