| 【C#】asp.net之HTTP协议断点续传
					当前位置:点晴教程→知识管理交流
					
					→『 技术文档交流 』
					
				 
 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; namespace HttpDemo { 	class Program 	{ 		//需要下载的路径 		static string url = "http://www.aseoe.com/demo/api/jquery_aseoe_001.zip"; 		//获取文件全称 		static string fileName = Path.GetFileName(url); 		//保存路径 		static string localPath = "D:\\HttpCeShi\\" + fileName; 		//未下载完后面加.temp后缀名 		static string tempPath = localPath + ".temp"; 		//偏移量(断点) 		static int pos; 		static void Main(string[] args) 		{ 			DownLoad(); 			Console.ReadLine(); 		} 		public static void DownLoad() 		{ 			//如果存在要更新的文件就结束 			if (File.Exists(localPath)) 			return; 			Stream localfs = null; 			//如果不存在未上传完文件(需断点续传文件) 			if (File.Exists(tempPath)) 			{ 				localfs = new FileStream(tempPath, FileMode.Open); 			} 			else 			{ 				localfs = new FileStream(tempPath, FileMode.Create); 			} 			//获取断点 			pos = (int)localfs.Length; 			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 			request.Headers.Add("Accept-Charset", "GBK,utf-8"); 			request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"; 			request.Method = "GET"; 			request.Timeout = 30000; 			//文件总长度单位(B) 			long total = request.GetResponse().ContentLength; 			Console.WriteLine("总长度为:" + total); 			if (pos > 0) 			request.AddRange(pos);//偏移到断点 			HttpWebResponse responseResult = (HttpWebResponse)request.GetResponse(); 			using (Stream stream = responseResult.GetResponseStream()) 			{ 				byte[] buffer = new byte[total - pos]; 				int readSize = stream.Read(buffer, 0, buffer.Length); 				while (readSize > 0) 				{ 					localfs.Write(buffer, 0, readSize); 					readSize = stream.Read(buffer, 0, buffer.Length); 					Console.WriteLine("已下载:" + localfs.Length); 				} 				localfs.Close(); 				File.Move(tempPath, localPath);//将临时文件改为正常文件后缀 				Console.WriteLine("下载完成!!!"); 			} 		} 	} } 该文章在 2021/3/3 17:39:36 编辑过 | 关键字查询 相关文章 正在查询... |