2010-01-12 124 views
0

我试图打开PDF文档以在IE6中显示。我正在使用以下代码片段:在IE6中查看PDF

response.ContentType = healthMedia.MediaKey.MimeType; 
response.ClearHeaders();  

response.AddHeader("Content-Disposition", "inline; filename=" + mediaKeyId); 

int contentLength = healthMedia.Content.Length; 
response.AppendHeader("content-length", Convert.ToString(contentLength)); 
response.OutputStream.Write(healthMedia.Content, 0, contentLength); 

healthMedia.MediaKey.MimeType;等于'application/pdf'

这会弹出Save对话框。如果我注释掉Response.ClearHeaders();我弹出一个新窗口,但它的内容是一堆乱码(随机编码文本)。

如何让IE6正确打开PDF?

-Nick

+0

看起来像你这样做是正确的。你有没有尝试从IE6中的其他网站打开PDF文件?这可能是您的IE6浏览器的Adobe Reader插件配置不正确。 – 2010-01-12 14:13:03

+0

哈哈!我想当我看到浏览器试图下载PDF时,应该会发生这种情况。谢谢 – Nick 2010-01-12 14:18:04

+0

...对于“正确”的值X ;-) Adob​​e Reader插件负责目前任何软件的Web攻击的最大比例。允许PDF阅读器作为一个面向网络的插件运行是很冒险的。 – bobince 2010-01-12 14:37:01

回答

0

你试过Response.End(),也Response.Buffer = true?您可能还需要设置缓存策略。

+0

这是来自内存,我更喜欢提供PDF作为附件,以避免使用可怕的Acrobat Reader插件冻结浏览器。 – 2010-01-12 14:17:34

+0

谢谢克里斯..在清除标题后浏览器正试图下载pdf。该插件不见了。我正在添加这个头response.AppendHeader(“content-length”,Convert.ToString(contentLength)); 这就是你的建议? – Nick 2010-01-12 14:35:12

+0

也结束响应,并使其缓冲需要在IE6(我认为) – 2010-01-12 15:04:25

0

使用response.BinaryWrite()而不是response.OutputStream.Write()

+0

BinaryWrite完全是他在做什么,他仍然需要长度 – 2010-01-12 17:44:40