注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网事

备忘录

 
 
 

日志

 
 

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

2009-12-28 17:44:19|  分类: .Net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Text;
 5using System.IO;
 6
 7namespace 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://www.cnblogs.com/downmoon/archive/2008/01/29/1057726.html

第二 调用时请用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

  评论这张
 
阅读(1675)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018