通過asp.net批量下載圖片的方法

來源:互聯網
上載者:User

有時,我們看到比較好的漂亮圖片壁紙,風景圖畫等,可能需要從固定的網址下載圖片。如果一個網頁一個網頁地開啟然後另存新檔我們的檔案名稱,很費時。有沒有批量下載的辦法呢?有的!但前提是:圖片的路徑及檔案名稱有規律。

當然,你可以使用網際快車或迅雷的批量下載功能,不在本文討論之列。

這裡利用了 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://image2.sinajs.cn/newchart/min/n/sh600030.gif?1209560972156
注意,在圖片檔案名稱後面的加了一個問號(?), 然後接著是一串數字:1209560972156,為什麼要這麼做呢?原因就是防止瀏覽器的緩衝作怪,事實上,你可以使用任意一串字元代替它!接下來的工作就比較簡單,下載它,變成你需要的。OK,僅說思路。其他的由你舉一返三。編程愉快!:)

最後要特別提醒的是:
本文僅從技術角度出發,說明程式編寫方法。您需要合理,合法地使用網上資源,切勿濫用或侵犯他人利益。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.