直接下载网络文件和间接

时间:2012-06-27 22:14:45

标签: asp.net download httpresponse swfobject

在我的网络服务器上,我有一个名为03.mp4的视频文件 我有一个页面(videoserver.aspx)使用下面的代码

来提供该文件
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=video.mp4");
Response.TransmitFile(Server.MapPath("03.mp4"));
Response.End();

这两个电话之间的区别是什么? 1:http://localhost/media/03.mp4
2:http://localhost/media/videoserver.aspx?q=03

当我直接在浏览器中指向这些网址时,它会在两种情况下都提示我保存对话框 我有另一个有SWFObject的网页。它消耗视频作为输入。好。当我将URL 1提供给它时​​,它会加载视频 当我提供URL 2时,它不会加载视频。

为什么会出现这种差异?我更喜欢URL 2,因为您可以根据查询字符串动态更改您为消费者服务的视频。

2 个答案:

答案 0 :(得分:0)

许多视频播放器(包括新的HTML5 <video>元素)需要使用HTTP Range标头支持所谓的字节范围请求。这通常已经构建在一个有点自尊的HTTP服务器中。基本上,为了通知客户端请求的URL支持字节范围请求,服务器应该在响应上返回Accept-Ranges: bytes,并且能够通过完全服务于请求的字节范围来处理所有传入的Range请求根据规范返回响应(有关详细信息,请参阅Range标题上的第一个链接。)

因此,如果您选择完全掌握HTTP响应处理而不是让HTTP服务器完成它的设计工作,那么您必须仔细考虑这一点。

答案 1 :(得分:0)

因此证明我是SWFObject的新手 我所指的SWFObject是由Camtasia抛出的,它通过FLashVars接受mp4文件。
问题是“为什么在接受URL 1时它不接受URL 2?”。答案是,URL 2并未以.mp4结尾 然后解决我的问题的方法是,创建一个接受*/media/*.mp4路径的处理程序并返回相应文件的内容,在我的例子中是从DB中获取的。