直接和间接下载Web文件之间的区别



在我的网络服务器上,我有一个名为03.mp4的视频文件。
我有一个页面(视频服务器.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

当我直接在浏览器中指向这些 URL 时,在这两种情况下都会提示我"保存"对话框。
我有另一个网页有一个SWFObject。它使用视频作为输入。还行。当我向它提供 URL 1 时,它会加载视频。
当我向它提供 URL 2 时,它不会加载视频。

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

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

因此,如果您选择将HTTP响应处理完全掌握在自己手中,而不是让HTTP服务器完成其设计的工作,则必须仔细考虑这一点。

因此,

它证明我是SWFObject的新手。
我所指的SWFObject是由Camtasia发布的,它通过FLashVars接受mp4文件。
问题是"为什么它不接受网址 2,而它接受网址 1?答案是,URL 2 不是以 .mp4 结尾的。
然后我的问题的解决方案是,创建一个接受*/media/*.mp4路径并返回相应文件内容的处理程序,在我的情况下,这些内容是从数据库中获取的。

最新更新