设置ContentType =“image / tiff”并发送图像在IE中不起作用

时间:2011-01-20 16:33:52

标签: asp.net

我需要从ASP网页发送图像(作为可下载文件)。除IE(所有版本)外,它在每个浏览器中都能正常工作。

这是服务器端代码:

bool export = Request.QueryString["Export"] != null;
if (export)
{
    byte[] allBytes = File.ReadAllBytes(@"C:\MyImage.tif");
    Response.ContentType = "image/tiff";
    Response.AddHeader("content-disposition", "attachment; filename=\"MyImage.tif\"");
    Response.OutputStream.Write(allBytes, 0, allBytes.Length);
    Response.OutputStream.Flush();
    Response.End();
    return;
}

这是JavaScript:

$('#ExportFrame').attr('src', 'Default.aspx?Export=true'); // ExportFrame is an iframe

在IE中,我不断收到错误消息“Internet Explorer无法从localhost下载Default.aspx”。我认为将它加载到iframe元素中可能是一个问题,但重定向到URL也不起作用。真正奇怪的是,转到URL(/Default.aspx?Export=true)第一次不起作用,但在此之后每次都有效。同样,这适用于我尝试过的每个浏览器,除了IE。

有什么想法吗?

更新: aspx页面具有以下代码以防止页面被缓存:

// Never cache this page
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;

删除前两行并只留下Response.Expires = -1解决了这个问题。

2 个答案:

答案 0 :(得分:0)

AFAIK,您必须修复客户端上的文件类型关联才能使其正常工作。已知问题 - Windows更新通常会破坏此关联,从而导致出现此类错误消息。

http://www.eggheadcafe.com/software/aspnet/36147698/office-updates-break-tiff-file-associations.aspx

<强>更新

1。)在桌面上创建一个空白文本文档。 (FILE.TXT)

2.。)将文件扩展名从.txt更改为.tiff。

3.。)右键单击.tiff文件并选择打开。在下一个框中选择“从已安装程序列表中选择程序。

4.单击浏览按钮并浏览到“C:\ Program Files \ Common Files \ Microsoft Shared \ MODI \ 12.0”。

5.)选择“MSPVIEW.EXE”并单击“打开”。

6.。)选择“Microsoft Office Document Imaging”,然后单击“确定”。

7。)您将收到一条消息,指出无法打开文档。那是因为它不是真正的图形图像。我们此时只是设置文件关联。

8.。)重复步骤1 - 7并使用.tif作为.tiff,因为此类文档有两种不同的文件扩展名。

答案 1 :(得分:0)

aspx页面有以下代码来阻止页面缓存:

// Never cache this page
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;

删除前两行并只留下Response.Expires = -1解决了这个问题。出于某种原因,这阻止了图像在IE中正常工作。