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

本文介绍使用 C# 实现 HTTP 大小文件下载的方法,对比两种不同方式:HttpWebRequest 和 WebClient 类。前者可能因文件大小无法成功下载,后者则表现更稳定。同时提供了线程调用示例。
 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

特等奖标准成品论文(Word无水印纯净版) 硬核结构:全文包含完整的摘要、问题重述与分析、模型假设、符号说明、模型建立与求解、灵敏度分析及结论。即插即用:排版严格遵循官方规范,逻辑严密。拿到手即可作为绝佳的高分参考模板,稍作替换与个性化润色即可极速完稿,彻底解决写论文难的痛点。双源硬核解题代码(Python与MATLAB双版本)拒绝假代码:提供底层逻辑清晰、模块化设计的全套可运行源码。全流程覆盖:涵盖从前期数据清洗预处理,到中期核心数学模型训练,再到后期启发式算法寻优。傻瓜式运行:代码自带详尽的逐行中文注释,并支持一键生成高质量结果可视化图表,编程小白也能轻松复现与二次开发。全量数据与结果展示表所有中间处理数据、模型输出参数以及最终结论,均已精细整理成高质量表格。直观呈现性能评估指标与多模型对比分析,可直接作为论文正文或附件使用,极大提升学术说服力。独家硬核思路解析深入浅出剖析出题人意图,详细拆解每一小问的数学本质与底层逻辑,让你不仅知其然更知其所以然。【四大核心产品优势】高效实用:所有代码与论文均经过严格测试,确保结果精准无误、完全可复现,省去熬夜试错的时间。全栈覆盖:从思路分析到跑出结果,再到写出高质量论文,提供一站式全流程资料矩阵。排版辅助:资料内提供专业的论文排版一键转换工具与官方标准模板,告别格式调整的繁琐。持续迭代:网盘直发,开赛后资料库将持续滚动更新,所有用户均可免费同步获取最新包。【适用人群】想要打破建模瓶颈的参赛队长与主攻手;急需高质量底层代码的编程小白;目标直指特等奖需要高分模板对标的精英团队。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值