我需要从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
解决了这个问题。
答案 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中正常工作。