下载图片,测试代码如下:string path = "d:\\1.png";
Bitmap bitmap = new Bitmap(path);
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, ImageFormat.Png);
ms.WriteTo(Response.OutputStream);
Response.AppendHeader("Content-Disposition", string.Format("Attachment; FileName={0}." + "png" + ";", HttpUtility.UrlEncode("chart", System.Text.Encoding.UTF8)));
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "image/png;charset=utf-8";
Response.Charset = "UTF-8";
Response.Flush();
Response.End();
function test()
{
var form = document.createElement("form");
form.method = "post";
form.target = "_blank";
form.action = "WebForm8.aspx";
document.body.appendChild(form);
form.submit();
}
目前发现有的IE浏览器再下载图片时,新弹出的网页没有自动关闭,请问是不是IE的设置问题?

解决方案 »

  1.   

    目前我们这里有一台机有问题,ie9,但其他机器的ie9都正常,想找到那台机器的原因,有问题机器的ie都恢复过默认的设置,但问题依旧。
    很费解。
      

  2.   

    不用设置target为_blank
    服务器返回的是文件流的话,浏览器自然会弹出下载,不会刷新页面
    如果会刷新,可以设置target为一个隐藏iframe的name,id,不要设为_blank即可
      

  3.   


    谢谢,不过只所以谈框,是因为想给用户一个提示,告知用户正在系统正在处理。
    之前也用过用隐藏iframe,但在ff、chrome、opera下,事件捕获不准确,所有最后全部都修改为_blank.当然也想过用ajax方法,后台生成文件后,返回给前台一个url,前台脚本再去处理,不过领导不让,所以还的用form提交。