2008-11-14 41 views
0

我有一个Asp.Net 1.1应用程序,它使用以下代码将图像文件写出到弹出web页。在asp.net 1.1和IE7中设置Response.ContentType =“image/tiff”不显示tif文件

Response.ContentType="image/tiff" 'Only for Tif files 
    Dim objStream As Object 
    objStream = Server.CreateObject("ADODB.Stream") 
    objStream.open() 
    objStream.type = 1 
    objStream.loadfromfile(localfile) 
    Response.BinaryWrite(objStream.read) 

我用TIF文件测试了这一点。这些文件在IE6和Safari中正确显示,但在IE7中它们没有显示,没有任何东西似乎返回到网页。带有jpg,gif扩展名的文件正在正确显示。这里可能是什么问题?

回答

0

您是否尝试将Content-Disposition设置为Inline?

Response.AppendHeader("Content-Disposition", "inline"); 
0

是的,刚刚尝试过。不起作用。是否与tiff有4个字母而不是3个字符有关。我在某处读到IE7不支持4个字母的扩展名。

1

那么,这取决于你的观众。但理想情况下,为了支持传统浏览器,您不应该假设他们可以处理TIFF。至少,加载TIFF,选择第一帧(页面),将DrawImage创建为新的位图,将位图保存为JPG到内存流,然后将其发送到Response。

如果您不熟悉.NET的GDI +图像处理或听起来很难,请参阅http://www.bobpowell.net/faqmain.htm获取建议。这些步骤中的每一步都可以用几行代码完成。如果您还不知道GDI +,那么值得所有Web开发人员学习。这可能会使得这种“艰难(但安全)的方式”对于单纯的教育来说是值得的。如果你已经知道如何,它不会需要半小时。

如果您必须显示多页TIFF,并且您希望用户控制要查看哪些页面,则必须创建一个用户界面来设置页码。如果您想要在每个页面上显示多个TIFF,那么可能会变得不平凡,因此请考虑在第一个网页上显示所有tiff#1页面,或允许他们通过链接到另一个网页来查看后续的tiff页面上一页/下一页tiff页面按钮。它应该是一个通用页面,它接受文件名和当前页面编号(上一页/下一页按钮指向本身,带有+/-一个页码)作为URL参数。

如果您知道只会显示文本文档而不是照片,请尝试将单帧GIF而不是TIFF发送到浏览器,以减少文字上的杂乱。但之前呢 - 照片看起来很糟糕的GIF。