强制下载excel

        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        /// <param name="filepath">导出的文件路径</param>
        /// <param name="filename"></param>
        public static void DownLoadFile(HttpContextBase context, string filepath,string filename)
        {

            System.IO.FileInfo file = new System.IO.FileInfo(filepath);
            context.Response.Clear();
            context.Response.Charset = "GB2312";
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
            // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 
            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + context.Server.UrlEncode(filename));
            // 添加头信息,指定文件大小,让浏览器能够显示下载进度 
            context.Response.AddHeader("Content-Length", file.Length.ToString());

            // 指定返回的是一个不能被客户端读取的流,必须被下载 
            context.Response.ContentType = "application/ms-excel";

            // 把文件流发送到客户端 
            context.Response.WriteFile(file.FullName);

            //System.IO.File.Delete(path + fileName);//删除临时文件

            // 停止页面的执行 
            context.Response.End();
            

        }
public static void FileDownload(string FilePath, string FileName, string FileType, string FileTitle)
    {
        string strFullFileName = FilePath + FileName;

        long chunkSize = 102400;  //建立一个100K的缓冲区    
        byte[] buffer = new byte[chunkSize];
        long dataToRead = 0;//已读的字节数 
        FileStream stream = null;

       
            stream = new FileStream(strFullFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
            dataToRead = stream.Length;

            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ClearHeaders();
            HttpContext.Current.Response.Buffer = false;

            if (FileType == "")
            {
                FileType = FileName.Substring(FileName.LastIndexOf(".") + 1);
            }
            switch (FileType.ToString().ToUpper())
            {
                case "XLS":
                    HttpContext.Current.Response.ContentType = "application/ms-excel";
                    break;
                case "DOC":
                    HttpContext.Current.Response.ContentType = "application/ms-word";
                    break;
                case "TXT":
                    HttpContext.Current.Response.ContentType = "application/text";
                    break;
                case "PDF":
                    HttpContext.Current.Response.ContentType = "application/pdf";
                    break;
                case "GIF":
                    HttpContext.Current.Response.ContentType = "images/gif";
                    break;
                case "JPG":
                    HttpContext.Current.Response.ContentType = "images/jpg";
                    break;
            }
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
            HttpContext.Current.Response.AddHeader("Content-Length", dataToRead.ToString());

            while (dataToRead > 0)
            {
                if (HttpContext.Current.Response.IsClientConnected)
                {
                    int length = stream.Read(buffer, 0, Convert.ToInt32(chunkSize));
                    HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);
                    //HttpContext.Current.Response.End();
                    HttpContext.Current.Response.Flush();
                    HttpContext.Current.Response.Clear();
                    dataToRead -= length;
                }
                else
                {
                    dataToRead = -1; //防止client失去连接 
                }
            }

            //HttpContext.Current.Response.End();

        
          
        
    }
}

 





 

posted @ 2014-05-28 09:46  江—城—子  阅读(254)  评论(0编辑  收藏  举报