标签:
C# 文件下载四方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.IO;publicpartialclass_Default : System.Web.UI.Page{protectedvoidPage_Load(objectsender, EventArgs e){}//TransmitFile实现下载protectedvoidButton1_Click(objectsender, EventArgs e){Response.ContentType = "application/x-zip-compressed";Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");stringfilename = Server.MapPath("DownLoad/z.zip");Response.TransmitFile(filename);}//WriteFile实现下载protectedvoidButton2_Click(objectsender, EventArgs e){stringfileName ="asd.txt";//客户端保存的文件名stringfilePath=Server.MapPath("DownLoad/aaa.txt");//路径FileInfo fileInfo = newFileInfo(filePath);Response.Clear();Response.ClearContent();Response.ClearHeaders();Response.AddHeader("Content-Disposition", "attachment;filename="+ fileName);Response.AddHeader("Content-Length", fileInfo.Length.ToString());Response.AddHeader("Content-Transfer-Encoding", "binary");Response.ContentType = "application/octet-stream";Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");Response.WriteFile(fileInfo.FullName);Response.Flush();Response.End();}//WriteFile分块下载protectedvoidButton3_Click(objectsender, EventArgs e){stringfileName = "aaa.txt";//客户端保存的文件名stringfilePath = Server.MapPath("DownLoad/aaa.txt");//路径System.IO.FileInfo fileInfo = newSystem.IO.FileInfo(filePath);if(fileInfo.Exists == true){constlongChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力byte[] buffer = newbyte[ChunkSize];Response.Clear();System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);longdataLengthToRead = iStream.Length;//获取下载的文件总大小Response.ContentType = "application/octet-stream";Response.AddHeader("Content-Disposition", "attachment; filename="+ HttpUtility.UrlEncode(fileName));while(dataLengthToRead > 0 && Response.IsClientConnected){intlengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小Response.OutputStream.Write(buffer, 0, lengthRead);Response.Flush();dataLengthToRead = dataLengthToRead - lengthRead;}Response.Close();}}//流方式下载protectedvoidButton4_Click(objectsender, EventArgs e){stringfileName = "aaa.txt";//客户端保存的文件名stringfilePath = Server.MapPath("DownLoad/aaa.txt");//路径//以字符流的形式下载文件FileStream fs = newFileStream(filePath, FileMode.Open);byte[] bytes = newbyte[(int)fs.Length];fs.Read(bytes, 0, bytes.Length);fs.Close();Response.ContentType = "application/octet-stream";//通知浏览器下载文件而不是打开Response.AddHeader("Content-Disposition", "attachment;  filename="+ HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));Response.BinaryWrite(bytes);Response.Flush();Response.End();}} | 
标签:
原文地址:http://www.cnblogs.com/gc2013/p/4600021.html