asp页面播放视频等文件
来源:互联网 发布:盯盯软件怎么使用 编辑:程序博客网 时间:2024/05/22 04:30
- 不说废话,open code,open doc
- 最终显示视频的页面 Main.aspx.cs
-
-
-
-
-
-
-
-
- protected string SelectPlay(string Url, string Width, string Height, string FileName)
- {
- string isExt = "";
- StringBuilder sb = new StringBuilder("");
- int i = FileName.LastIndexOf(".");
- isExt = FileName.Substring(i + 1, FileName.Length - i - 1);
- isExt = isExt.ToLower();
- switch (isExt)
- {
- case "asf":
- case "wmv":
- case "wma":
- case "avi":
- case "mp3":
- case "wav":
- case "mpeg":
- sb.Append("<object id=/"MediaPlayer/" style=/"WIDTH: " + Width + ";height:" + Height + "/" /n");
- sb.Append("classid=/"CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6/" type=application/x-oleobject standby=/"Loading Windows Media Player components.../"");
- sb.Append("codebase=/"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,1,5,217/" VIEWASTEXT>/n");
- sb.Append("<param name=/"URL/" value='" + Url + "'>/n");
- sb.Append("<param name=/"showstatusbar/" value=/"1/">");
- sb.Append("<param name=/"autostart/" value=/" 1 /">/n");
- sb.Append("<param name=/"showcontrols/" value=/"1/">");
- sb.Append("<param name=/"uimode/" value=/"full/">");
- sb.Append("<param name=/"windowlessvideo/" value=/"0/">/n");
- sb.Append("</object><br/>/n");
- break;
- case "rm":
- case "rmvb":
- sb.Append("<OBJECT id='RealOne' classid='clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA' HEIGHT=" + Height + " WIDTH=" + Width + " VIEWASTEXT>/n");
- sb.Append("<param name='_ExtentX' value='5503'>/n");
- sb.Append("<param name='_ExtentY' value='1588'>/n");
- sb.Append("<param name=/"SRC/" value=/"" + Url + "/">");
- sb.Append("<param name='AUTOSTART' value='1'>/n");
- sb.Append("<param name='SHUFFLE' value='0'>/n");
- sb.Append("<param name='PREFETCH' value='0'>/n");
- sb.Append("<param name='NOLABELS' value='0'>/n");
- sb.Append("<param name='CONTROLS' value='ALL'>/n");
- sb.Append("<param name='LOOP' value='0'>/n");
- sb.Append("<param name='NUMLOOP' value='0'>/n");
- sb.Append("<param name='CENTER' value='0'>/n");
- sb.Append("<param name='MAINTAINASPECT' value='0'>/n");
- sb.Append("<param name='BACKGROUNDCOLOR' value='#000000'>/n");
- sb.Append("</OBJECT>");
- break;
- case "swf":
- case "flv":
- sb.Append("<OBJECT codeBase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='" + Width + "' height='" + Height + "'> ");
- sb.Append("<PARAM NAME='movie' VALUE='" + Url + "'> ");
- sb.Append("<PARAM NAME='play' VALUE='true'> ");
- sb.Append("<PARAM NAME='quality' VALUE='high'> ");
- sb.Append("<embed src='" + Url + "' quality='high' pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width='" + Width + "' height='" + Height + "'></embed> ");
- sb.Append("</OBJECT> ");
- break;
- default:
- break;
- }
- return sb.ToString();
- }
- SelectPlay方法根据参数来判断选择什么样的配置方式,最后将配置好的哦bject标签转换成字符串返回,只要在页面上显示这个字符串就达到效果,共有4个参数,string Width, string Height, 可指定核合适大小 ,string FileName 很容易得到。对于URL并不是直接使用资源(如视频)的地址,而是使用一个专门的页面(这里用的是display.aspx)来读取资源的数据,前面SelectPlay方法里的URL参数指的是该页面的地址(这里就是display.aspx的地址)
- 则可以在Main.aspx.cs如下编写(并非完整代码):
- protected void Page_Load(object sender, EventArgs e)
- {
- string strObjectCode = “”;
- if (!IsPostBack)
- {
- string strFilePath=”表示文件的路径”;
- string strFileName = “example.rmvb”;
-
- String strObjectURL = “display.aspx” + “?FilePath=” + strFilePath;
- strObjectCode = SelectPlay(strObjectURL, “500px”, “400px” , strFileName);
- }
- }
- 不考虑display.aspx的代码,若要播放视频等文件,只需要在main.aspx上添加依据代码即可,如下:
- <%= strObjectCode %>
- strObjectCode中包含的就是SelectPlay处理过的object控件编码
- 但真正运行显然还要完成display.aspx,此页面很简单,前面我也有过关于如何显示以image格式保存在数据库中的图片的方式,实际上和这里大同小异,display.aspx的作用就是读取指定资源的数据到内存中,在把它当作response发送到页面上去(即display.aspx页面),这里显示图片时是image标签捕获和显示了这些数据,这里只不过换成了哦bject标签罢了。
- 代码(display.aspx.cs > page_load中):
- String strFilePath = Request[“FilePath”];
- System.IO.FileInfo file = new System.IO.FileInfo(strFilePath);
- if (file.Exists)
- {
- Response.Clear();
- Response.AddHeader("Content-Disposition","attachment; FileName=" + file.Name);
- Response.AddHeader("Content-Length", file.Length.ToString());
- Response.ContentType = "application/octet-stream";
- Response.Filter.Close();
- Response.WriteFile(file.FullName);
- Response.End();
- }
- 至于display.aspx本身是一个普通的空的页面不需要任何具体内容
- 这样依靠这两个页面就可以实现如本文标题所说的功能
- (文中的字母可能有大小写误差,盖因在下并非在ide中写此代码,是在word中完成此文,请注意)