gpt4 book ai didi

asp.net - 来自 ashx handler 的 Html5 视频源

转载 作者:可可西里 更新时间:2023-11-01 13:13:00 25 4
gpt4 key购买 nike

我的视频数据存储在数据库中,想在我的页面中播放。我像这样制作自定义处理程序(FileHandler.ashx)

 public void ProcessRequest(HttpContext context)
{
int id;
if (context.Request.QueryString["FileId"] == null || !Int32.TryParse(context.Request.QueryString["FileId"], out id))
return;
var file = lnxFile.Get(id);
string fileName = file.Name + file.Extension;
context.Response.Clear();
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
context.Response.BinaryWrite(file.Data);
context.Response.End();
context.Response.Flush();
}

然后像这样使用html5的video标签

<video id="jwplayer_placeholder" width="320" height="240" controls> 
<source src="<%= "/CMS/Common/FileHandler.ashx?FileId=" + id %>" type="video/mp4">
</video>

但它不播放任何内容。谁能解释一下原因?

最佳答案

主要错误是您没有设置ContentType for the video然后你离开浏览器来决定它是什么。将其设置为:

context.Response.ContentType = "video/mpeg";

"Content-Disposition" 也用于下载文件,也将其删除

clear在这里没有意义,去掉

context.Response.Clear();

还要设置Buffer=off,因为你需要直接将它发送到浏览器。

这个序列没有意义,只保留Flush.

   context.Response.End();
context.Response.Flush();

所以最终的代码如下:

 public void ProcessRequest(HttpContext context)
{
int id;
if (context.Request.QueryString["FileId"] == null || !Int32.TryParse(context.Request.QueryString["FileId"], out id))
return;
var file = lnxFile.Get(id);

context.Response.Buffer = false;
context.Response.ContentType = "video/mpeg";
context.Response.BinaryWrite(file.Data);
context.Response.Flush();
}

关于asp.net - 来自 ashx handler 的 Html5 视频源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com