我有一个存储媒体文件的sql数据库(.avi f.e.)。我在aspx页面(VIDEOPAGE)中将视频作为字节数组提取并将其发送到另一个调用此页面的网页(必须是这样),并使用呈现Windows媒体播放器控件的html对象标签显示视频。
我使用的语法是:
Response.ContentType = contentType;
Response.AddHeader("Content-Disposition", string.Format("attachment; filename ={0}",myAttachment.FileName));
Response.OutputStream.Write(myAttachment.Attachment, 0, myAttachment.Attachment.Length)
这适用于所有mpeg和wmv文件,但在avi上失败! contentType变量包含CORRECT内容类型(我知道这是因为以下内容:
当我不使用对象标签但只是从数据库加载带有avi文件的VIDEOPAGE页面和上面的语法时,它会显示“你要打开吗...”对话框,我点击确定,然后视频在WMP中显示。
我尝试将Content-Disposition
更改为hidden
以及inline
。没什么..
有什么想法吗?
答案 0 :(得分:2)
首先,如果您只是将视频嵌入网页,则不需要Content-Disposition
标题,因此请删除该行。
其次,您能否告诉我们您为每种视频类型使用的Content-Type
值。
您的浏览器在Windows Media Player中打开视频是不证明您使用的是正确的类型,因为Internet Explorer和其他一些浏览器可以忽略 {{ 1}}标头并依赖文件扩展名。因此,您的文件名为.avi的事实足以让IE在WMP中播放视频。
答案 1 :(得分:1)
确保您已正确设置内容类型 AND ,并在文件名中包含一个众所周知的filetype-suffix(例如,“blah。 AVI 强>“)。如果浏览器无法识别内容类型或者没有为其设置关联,则浏览器通常会使用filetype-suffix。
答案 2 :(得分:0)
尝试删除Response.AddHeader("Content-Disposition", ...
行。
答案 3 :(得分:0)
Content Disposition标头应如下所示:
Content-Disposition: attachment; filename="filename.avi"
也许我误读了你的代码,但看起来像是:
a)Content-Disposition
和
b)您没有引号中的文件名。
这似乎不太可能,因为你只是遇到了AVI文件的问题,但由于mpeg和wmv文件对操作系统来说更为原生,因此即使不应该这样做也可能是巧合。
测试此方法的一种方法是将内容类型更改为中性内容,例如“.pdf”并查看会发生什么。