zoukankan      html  css  js  c++  java
  • 一个批量下载图片的c#类(downmoon)

     1using 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


    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    java ssh 框架下 利用junit4 spring-test进行单元测试
    在写junit test 的时候出现的java.lang.UnsupportedClassVersionError问题
    IBatis 2.x 和 MyBatis 3.0.x 的区别(从 iBatis 到 MyBatis)
    mysql GET DIAGNOSTICS 语法
    如何优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题
    mysql中binlog_format模式与配置详解
    MySql 里的IFNULL、NULLIF和ISNULL用法区别
    mysql order by 优化 |order by 索引的应用
    几款开源ESB总线的比较
    ETL简介
  • 原文地址:https://www.cnblogs.com/downmoon/p/1217269.html
Copyright © 2011-2022 走看看