ASP.NET关闭下载窗口

mac2022-06-30  25

以下我测试过,较好能解决:public static bool ResponseFile(HttpRequest _Request,HttpResponse _Response,string _fileName,string _fullPath, long _speed)  {   try   {    FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);    BinaryReader br = new BinaryReader(myFile);    try    {     _Response.AddHeader("Accept-Ranges", "bytes");     _Response.Buffer = false;     long fileLength = myFile.Length;     long startBytes = 0;          int pack = 10240; //10K bytes     int sleep = (int)Math.Floor(1000 * pack / _speed) + 1;     if (_Request.Headers["Range"] != null)     {      _Response.StatusCode = 206;      string[] range = _Request.Headers["Range"].Split(new char[] {'=', '-'});      startBytes = Convert.ToInt64(range[1]);     }     _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());     if (startBytes != 0)     {      _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength-1, fileLength));     }     _Response.AddHeader("Connection", "Keep-Alive");     _Response.ContentType = "application/octet-stream";     _Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(_fileName,System.Text.Encoding.UTF8) );      br.BaseStream.Seek(startBytes, SeekOrigin.Begin);     int maxCount = (int) Math.Floor((fileLength - startBytes) / pack) + 1;

     for (int i = 0; i < maxCount; i++)     {      if (_Response.IsClientConnected)      {       _Response.BinaryWrite(br.ReadBytes(pack));       Thread.Sleep(sleep);      }      else      {       i=maxCount;       }     }     _Response.Flush();    }    catch    {     return false;    }    finally    {     br.Close();     myFile.Close();    }   }   catch   {    return false;   }   return true;  }这一种代码也是借签网上的它也可以实现输出文件并关闭新打开幕窗体另外在测试当中发现,服务器端与客户的操作系统不同也会有一些意想不到的事情发生一般来说,用以上代码,如不能正常关闭,你可以查阅浏览器的设置,在高级中。再者,你可以修改不同的输出内容类型Response.ContentType = "application/octet-stream";因为不同的contenttype,在客户的端的解释可能是不一样的。

转载于:https://www.cnblogs.com/LYunF/archive/2012/02/18/2357598.html

相关资源:asp.net弹出窗口并返回值刷新主窗口
最新回复(0)