logo 广告
Loading...
 导航 所在位置:论坛首页 -> ┈┋电脑网络┋┈ -> Asp/Asp.Net教程 -> DownloadFile方法批量下载图片
回复
标题:DownloadFile方法批量下载图片收藏 编辑 删除 楼主 | 上一篇 下一篇
鞋的恋爱
头像
等级:大侠
权限:普通用户
积分:143
金钱:4726
声望:267
经验:241
发帖数:1487
注册:2006年8月22日
资料 短消息2008-5-10 10:41:03
 有时,我们看到比较好的漂亮图片壁纸,风景图画等,可能需要从固定的网址下载图片。如果一个网页一个网页地打开然后另存为我们的文件名,很费时。有没有批量下载的办法呢?有的!但前提是:图片的路径及文件名有规律。

    当然,你可以使用网际快车或迅雷的批量下载功能,不在本文讨论之列。

    这里利用了 WebClient的DownloadFile方法,由于代码比较简单,我就不多说。

// BatchDownload.aspx
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="BatchDownload.aspx.cs" Inherits="_Default" Debug="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>批量图片下载网页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>

// BatchDownload.asp.cs

using System;
using System.Data;
using System.Drawing;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        int m = 0;
        for (int i = 1; i < 200; i++)
        {
            for (int j = 1; j < 100; j++)
            {
                 string folder;
                 if(i < 100)
                 {
                     folder = i.ToString("000");
                 }
                 else
                 {
                     folder = i.ToString("0000");
                 }
                string uriString = "http://www.photodownloadsite.com/200702/" + folder + @"/" + j.ToString() + @".jpg";
                Uri address = new Uri(uriString);
                string fileName = "a" + i.ToString("000") +  m.ToString("00000") + ".jpg";

                WebClient wc = new WebClient();
                try
                {
                    //Bitmap bmp = new Bitmap(wc.OpenRead(address));
                    wc.DownloadFile(address, Server.MapPath(fileName));
                }
                catch (Exception exc)
                {
                }
                finally
                {
                    if (wc != null) wc.Dispose();
                }
                //sb.Append(uriString + "<br/>" + Server.MapPath(fileName) + "<br/>");
                //sb.Append("<img src='" + uriString + "'><br/>");

                m++;
            }
        }
          //Label1.Text = sb.ToString();
    }
}

    这里出一个思考题:如果想要下载图片高度、宽度大于某个指定尺寸大小的图片呢,应该如何做?想一想。实际上,上面这句已大致提示了相关的做法了://Bitmap bmp = new Bitmap(wc.OpenRead(address));

    这里不妨再引申一下:如果需要即时获取如下图类似的股票价格图,又如何做呢?



我获取此张图片时,此图片的链接是:http://dotnet.chinaitlab.com/UploadFiles_6597/200805/20080503095429115.gif?1209560972156
注意,在图片文件名后面的加了一个问号(?), 然后接着是一串数字:1209560972156,为什么要这么做呢?原因就是防止浏览器的缓存作怪,事实上,你可以使用任意一串字符代替它!接下来的工作就比较简单,下载它,变成你需要的。

签名

2008-5-10 10:41:03 顶部
第1页 共页 共0个回复     <<    >>    
 快速回复
  • 支持UBB,HTML标签

  • 高级回复

  • 操作选项:评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
      首页 | 购买指南 | 虚拟主机 | 特色介绍 | 下载中心 | 支付方式
    Copyright 2004-2008 BBSGood.com Powered By: BBSGood.Speed Version 5.0
      咨询电话:0575-85513832、0575-85513825(传真)、7*24小时咨询服务:13606552007 不良信息举报中心 浙ICP备05029817号
      业务QQ:38958768、客服QQ1:415896239、客服QQ2:343896043、MSN:jccsxx@hotmail.com