内容处理问题

时间:2009-12-31 09:57:53

标签: c# http content-disposition

我有一个存储媒体文件的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。没什么..

有什么想法吗?

4 个答案:

答案 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”并查看会发生什么。