首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Response.Redirect定位下载,页面直接关闭解决方法

2012-05-10 
Response.Redirect定位下载,页面直接关闭碰到一个奇怪的问题,我有一个下载的页面,接收下载的ID,如果程序会

Response.Redirect定位下载,页面直接关闭
碰到一个奇怪的问题,我有一个下载的页面,接收下载的ID,如果程序会根据此ID取得文件的真实路径,然后就用Response.Redirect到用户的窗口重定向到真实的下载地址,如果是IE能直接显示的格式(如网页,图片等)就应该在IE中直接显示此文件的内容,如果是IE不能直接显示的格式(如zip,exe)等应该提示用户下载。  
   
  但我碰到的问题是,当我使用IE来访问下载页面时,如果下载文件的格式是txt等,没有问题,文件内容直接显示在了IE中,但如果文件格式是zip时,没有出现预期的提示打开/保存/取消的对话框,而是浏览器窗口闪一下之后就自动关闭了,什么都没有。而如果使用Firefox则一切正常。  
   
  有人碰到过类似的问题吧?先谢了。 

补充: 打开页面的时候按住 CTRL 就能正常下载,另外下载文件的URL在浏览页面直接输入可以正常下载

[解决办法]
进来学习了
[解决办法]
用server.transfer看看
[解决办法]
学习
[解决办法]
正常的话是不会这样子的.
[解决办法]
看看是否是浏览器设置的原因,我的ie7可以
[解决办法]
看看是不是ie出问题了,ie经常出怪问题。搂住问题我遇到过,重启解决。
你不妨去其他机器上试试。
[解决办法]
这个异常现象倒是没碰到过...
[解决办法]
mark
[解决办法]
你的IE 打开 其它 网站 的下载 也是关闭/?
[解决办法]
比较少见了.还没碰到过
[解决办法]
给你个函数,你在page_load里判断下,如果不能直接在网页显示,就调用这个下载
把文件名(带路径)和你下载显示的文件标题作为参数传入就行 

C# code
private void DownLoad(string filepath, string filetitle) {    System.IO.FileInfo fi=new System.IO.FileInfo(filepath);            System.Web.HttpContext.Current.Response.Clear();    System.Web.HttpContext.Current.Response.ClearHeaders();    System.Web.HttpContext.Current.Response.Buffer = false;    System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";    System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filetitle, System.Text.Encoding.UTF8));    System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", fi.Length.ToString());    System.Web.HttpContext.Current.Response.WriteFile(fi.FullName);    System.Web.HttpContext.Current.Response.Flush();    System.Web.HttpContext.Current.Response.End();}
[解决办法]
添加这样一句话Response.AppendHeader("Content-Disposition","attachment;filename=aa.xls"); 
filename=aa.xls
表示打开/保存/取消的文件名

[解决办法]
友情UP

[解决办法]
这个异常现象倒是没碰到过...
[解决办法]
图片下载
C# code
public void SavePhotoFromUrl(string address, string FileName)    {        System.Net.WebClient wc = new System.Net.WebClient();        try        {            wc.DownloadFile(address, FileName);            Response.Write("<script>alert('远程文件已经下载完毕!地址为" + filename + "')</script>");        }        catch (System.Exception ex)        {            Response.Write("error:" + ex.Message.ToString());        }    }
[解决办法]
这样一来解决了`你所描述的问题了``
------解决方案--------------------


我知道maxthon按住ctrl可以阻止弹出窗口
其他不清楚
[解决办法]
友情UP
[解决办法]
顶!
接分
[解决办法]
该死的兼容问题

热点排行