1.文件下载到客户端
//WriteFile实现下载
protected void Download_Click(object sender, EventArgs e)
{ string fileName = "20151223Test.doc";//客户端保存的文件名 //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 string filePath = Server.MapPath(@"files\test.doc");//路径FileInfo fileInfo = new FileInfo(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.ContentEncoding = System.Text.Encoding.UTF8; Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); }//TransmitFile实现下载
protected void DownLoadTF_Click(object sender, EventArgs e) {Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", "attachment;filename=z.zip"); string filename = Server.MapPath(@"files\DownloadsText.zip"); Response.TransmitFile(filename); //Response.TransmitFile 需要 :Microsoft .NET Framework 1.1 Service Pack 1 支持!! }
//流方式下载
protected void DownLoadFL_Click(object sender, EventArgs e) { string fileName = "20151223aaa.doc";//客户端保存的文件名 //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 string filePath = Server.MapPath(@"files\租户装修手册-印象城.doc");//路径//以字符流的形式下载文件
using (FileStream fs = new FileStream(filePath, FileMode.Open)) { byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length);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(); } }
//流方式下载 2
protected void DownLoadFL2_Click(object sender, EventArgs e) { string fileName = "20151223aaa.doc";//客户端保存的文件名 //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 string filePath = Server.MapPath(@"files\租户装修手册-印象城.doc");//路径//以字符流的形式下载文件
using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { byte[] bytes = new byte[(int)fs.Length]; using (BinaryWriter bw = new BinaryWriter(fs)) { bw.Write(bytes); bw.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请求常用下载方式;
//通过webClient方式
WebClient client = new WebClient();
string url="http://down6.3987.com:801/2010/office_3987.com.zip";Stream strm = client.OpenRead("http://down6.3987.com:801/2010/office_3987.com.zip");string filename=url.Substring(url.LastIndexOf('/')+1);int count = 0;byte[] buffer = new byte[4096];FileStream fs = new FileStream(Application.StartupPath+"//"+filename, FileMode.Create);while ((count = strm.Read(buffer, 0, buffer.Length)) > 0) {fs.Write(buffer, 0, count);
}
fs.Close();strm.Close();strm.Dispose();fs.Dispose();
//通过原生态HttpWebrequest方式
string url = "http://down6.3987.com:801/2010/office_3987.com.zip";
string filename = url.Substring(url.LastIndexOf('/') + 1);
//用webClient方式创建http请求HttpWebRequest req =(HttpWebRequest)HttpWebRequest.Create(url) ; //创建链接//获取服务其数据
HttpWebResponse res = (HttpWebResponse)req.GetResponse();Stream mystream = res.GetResponseStream();
//开始文件操作
FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory+"//"+filename, FileMode.Create, FileAccess.Write, FileShare.None);byte[] buffer=new byte[1024];
int count=0;while((count=mystream.Read(buffer,0,1024))>0){ fs.Write(buffer, 0, count);}fs.Close();
mystream.Close();fs.Dispose();
参考: