点击下载浏览器会有下载的进度条所有不用,如果硬要的话可以做个加载页面下载完成就close掉
/// 流式下载文件
public static void DownLoadFile()
{
string fileName = "test.txt";//客户端保存的文件名
string filePath = HttpContext.Current.Server.MapPath("../File/Temp/Parameter_Alias_Import_Template.xlsx");//路径 //以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length);
fs.Close();
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));//通知浏览器下载文件而不是打开
HttpContext.Current.Response.BinaryWrite(bytes);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
sorry,我想可能是我没有描述清楚,
我要做的,是在1.点击下载按钮后,2.________3.到出现下载窗口(提示是否保存)这中间的2这里出现一个提示.
你点击下载的时候是一个链接还是后台执行某些操作
使用的是button.没有跳转页面,button会执行一些逻辑判断,决定下载哪些数据.
@新手猿:
你这里应该考虑多开了个线程来执行这些操作,不然一个主线程你是没办法提示的
点击按钮弹出一个提示层,同时开启线程进行运算,运算完成隐藏该层
@Rich.T:
还有另一种办法,这些运算操作独立到一个新页面,在新页面的onload事件增加提示层,页面加载完成隐藏该层
@Rich.T: 多线程应该是CS模式下的win.exe程序才会用到吧?BS的web需要用到多线程么?我没有试过呢
@Rich.T: 谢谢,后来解决了,但是不经常上网,所以没有结贴,重新做了个页面,然后等逻辑跑完关闭页面,提示用户下载的.没有用到多线程,用的异步
做不到的。
同步或异步调用
点击后用js弹出一层,等待后台返回数据时隐藏层
当然,这个过程要异步进行