private void Export(System.Web.UI.WebControls.DataGrid dg,string fileName,string typeName) ...{ System.Web.HttpResponse httpResponse = Page.Response; httpResponse.AppendHeader ("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)); httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); httpResponse.ContentType = typeName; System.IO.StringWriter tw = new System.IO.StringWriter() ; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); dg.RenderControl(hw); string filePath = Server.MapPath("..")+fileName; System.IO.StreamWriter sw = System.IO.File.CreateText(filePath); sw.Write(tw.ToString()); sw.Close();
DownFile(httpResponse,fileName,filePath); httpResponse.End(); }
private bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath) ...{ try ...{ Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312"); System.IO.FileStream fs= System.IO.File.OpenRead(fullPath); long fLen=fs.Length; int size=102400;//每100K同时下载数据 byte[] readData = new byte[size];//指定缓冲区的大小 if(size>fLen)size=Convert.ToInt32(fLen); long fPos=0; bool isEnd=false; while (!isEnd) ...{ if((fPos+size)>fLen) ...{ size=Convert.ToInt32(fLen-fPos); readData = new byte[size]; isEnd=true; } fs.Read(readData, 0, size);//读入一个压缩块 Response.BinaryWrite(readData); fPos+=size; } fs.Close(); System.IO.File.Delete(fullPath); return true; } catch ...{ return false; } } }
|