0

我有一个存储媒体文件(.avi fe)的 sql 数据库。我将 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 变量包含正确的内容类型(我知道这是因为以下原因:

当我不使用对象标签而只是使用数据库中的 avi 文件和上述语法加载 VIDEOPAGE 页面时,它会显示一个“你要打开..”对话框,我单击确定,并且视频 DOES在 WMP 中显示。

我试图改变Content-Dispositiontohidden和 also inline。没有什么..

有任何想法吗?

4

4 回答 4

2

首先,如果您只是在网页上嵌入视频,则不需要Content-Disposition标题,因此只需删除该行。

其次,您能否向我们展示Content-Type您为每种视频类型使用的值。

您的浏览器在 Windows Media Player 中打开了视频并不能证明您使用的是正确的类型,因为 Internet Explorer 和其他一些浏览器可以忽略标题Content-Type并依赖文件扩展名。因此,您的文件名是 .avi 的事实足以让 IE 以 WMP 格式播放视频。

于 2009-12-31T14:25:18.203 回答
1

确保您已正确设置内容类型并且在文件名中包含众所周知的文件类型后缀(例如,“blah.avi )。如果浏览器无法识别内容类型或没有为其设置关联,则它们通常会使用文件类型后缀。

于 2010-01-01T02:18:34.930 回答
0

尝试删除Response.AddHeader("Content-Disposition", ...线。

于 2009-12-31T10:07:57.000 回答
0

内容处置标头应如下所示:

Content-Disposition: attachment; filename="filename.avi"

也许我误读了你的代码,但它看起来像:

a)您没有空间,Content-Disposition并且

b)您没有引号中的文件名。

这似乎不太可能,因为您只遇到 AVI 文件的问题,但由于 mpeg 和 wmv 文件更适合操作系统,这可能是一个巧合,即使它们不应该工作。

对此进行测试的一种方法是将内容类型更改为诸如“.pdf”之类的中性内容并查看会发生什么。

于 2009-12-31T10:15:58.073 回答