一个批量下载图片的c#类(downmoon)

100 篇文章 0 订阅
78 篇文章 0 订阅
 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 }

53

需要注意点:
第一 DownloadOneFileByURL方法,有时会下载不了文件,如果文件大于40K就更明显 DownloadOneFileByURLWithWebClient则无此问题。 当然,这个大文件也是相对的,如果真的large或huge,请参考FTP。
http://blog.csdn.net/downmoon/archive/2008/01/29/2071776.aspx
第二 调用时请用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         }


附 WebClient类的说明  
http://msdn.microsoft.com/zh-cn/library/system.net.webclient(VS.80).aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值