直接上代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 7 namespace DownloadImagebyXMLListFor2008 8 { 9 public class HttpDownLoad 10 { 11 /// <summary> 12 /// HttpWebRequest Property 13 /// </summary> 14 /// <param name="fileName"></param> 15 /// <param name="url"></param> 16 /// <param name="localPath"></param> 17 /// <param name="timeout"></param> 18 public static void DownloadOneFileByURL(string fileName, string url, string localPath, int timeout) 19 { 20 System.Net.HttpWebRequest request = null; 21 System.Net.HttpWebResponse response = null; 22 request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url + fileName); 23 request.Timeout = timeout;//8000 Not work ? 24 response = (System.Net.HttpWebResponse)request.GetResponse(); 25 Stream s = response.GetResponseStream(); 26 BinaryReader br = new BinaryReader(s); 27 //int length2 = Int32.TryParse(response.ContentLength.ToString(), out 0); 28 int length2 = Int32.Parse(response.ContentLength.ToString()); 29 byte[] byteArr = new byte[length2]; 30 s.Read(byteArr, 0, length2); 31 if (File.Exists(localPath + fileName)) { File.Delete(localPath + fileName); } 32 if (Directory.Exists(localPath) == false) { Directory.CreateDirectory(localPath); } 33 FileStream fs = File.Create(localPath + fileName); 34 fs.Write(byteArr, 0, length2); 35 fs.Close(); 36 br.Close(); 37 } 38 /// <summary> 39 ///Web Client Method ,only For Small picture,else large please use FTP 40 /// </summary> 41 /// <param name="fileName"></param> 42 /// <param name="url"></param> 43 /// <param name="localPath"></param> 44 public static void DownloadOneFileByURLWithWebClient(string fileName, string url, string localPath) 45 { 46 System.Net.WebClient wc = new System.Net.WebClient(); 47 if (File.Exists(localPath + fileName)) { File.Delete(localPath + fileName); } 48 if (Directory.Exists(localPath) == false) { Directory.CreateDirectory(localPath); } 49 wc.DownloadFile(url + fileName, localPath + fileName); 50 } 51 } 52}
需要注意点:
第一 DownloadOneFileByURL方法,有时会下载不了文件,如果文件大于40K就更明显,DownloadOneFileByURLWithWebClient则无此问题。当然,这个大文件也是相对的。
第二 调用时请用Thread,给出一个示例:
1 private void btnGet_Click(object sender, EventArgs e) 2 { 3 if (txtTempFile.Text.Trim().Length == 0) 4 { 5 ErrorStop("列表文件为空!"); return; 6 } 7 System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(DownloadAll)); 8 thread.Start(); 9 } 10 private void DownloadAll() 11 { 12 List<string> ls = GetStringsByFile(txtTempFile.Text.Trim()); 13 if (null != ls) 14 { 15 16 foreach (string s in ls) 17 { 18 try 19 { 20 //HttpDownLoad.DownloadOneFileByURL(s, Globals.HttpPreUrl, Globals.LocalPrePath, 8000000); 21 HttpDownLoad.DownloadOneFileByURLWithWebClient(s, Globals.HttpPreUrl, Globals.LocalPrePath); 22 } 23 catch { continue; } 24 } 25 } 26 }
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦