iT邦幫忙

DAY 4
10

VC# 網路(遊戲)程式設計 由淺入深系列 第 4

VC# 網路(遊戲)程式設計 由淺入深(4)-System.Net.WebClient說明與實作(2-1實作)

全系列[http://ithelp.ithome.com.tw/event/ironmanarticle3/id/20033582
](http://ithelp.ithome.com.tw/event/ironmanarticle3/id/20033582<br />
)
上一篇< http://ithelp.ithome.com.tw/question/10052177>
緊接的下一篇http://ithelp.ithome.com.tw/question/10052461
本篇是接上一篇,會介紹System.Net.WebClient如何實際應用
我們會製作兩個程式,
一個是HTTP下載檔案的程式(這篇) 和 一個上/下載FTP的檔案的程式(這篇發完約5分會發,因為字數限制....)
((如果這篇文章對你有幫助,麻煩推個文~~)
-對了,這篇很長,足足打了一天哦,而且超過字數,因為程式碼..所以一天份要分兩篇暈毆飛
直接切入正題了,
首先先講第一個程式,透過HTTP通訊協定下載檔案的程式.

請先將表單配置成如下:

並且將屬性配置成如下:

配置好了再來請看程式碼:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Net;
using System.IO;

namespace WebClientHTTP
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void btnDownload_Click(object sender, EventArgs e)
    {
      string uri = "";

      if (!txtURL.Text.StartsWith("http://"))
        uri = "http://" + txtURL.Text;
      else
        uri = txtURL.Text;

      string localfile = uri.Substring(uri.LastIndexOf("/") + 1); ;

      StatusBar.Text = "Downloading file from " + uri;

      WebClient webclient = new WebClient();

 
      try
      {
       
        
        NetworkCredential credentials = new NetworkCredential("test", "test@test.com");

        webclient.Credentials = credentials;

        webclient.DownloadFile(uri, localfile);

        StatusBar.Text = "從" + uri + "下載的檔案 下載完成了.";
        MessageBox.Show("檔案已經下載完成", "鐵人賽用", MessageBoxButtons.OK, MessageBoxIcon.Information);
      } 
      catch (WebException ex)
      {
        Console.WriteLine(ex.StackTrace.ToString());
      }

      webclient.Dispose();
    }
  }
}

程式碼解析:

 WebClient webclient = new WebClient();
  • 即是建立WebClient物件.

    NetworkCredential credentials = new NetworkCredential("", "");

  • 建立一個用戶端網路認證元件,這個在無驗證的HTTP環境留空即可,在後面有要驗證的程式我們再講到.

    webclient.DownloadFile(uri, localfile);

  • 自指定URI下載資料,並儲存為本機之檔案

    StatusBar.Text = "從" + uri + "下載的檔案 下載完成了.";

  • 當下載完成後,下面的狀態列就會出現,從(某處)下載的檔案下載完成了

    MessageBox.Show("檔案已經下載完成", "鐵人賽用", MessageBoxButtons.OK, MessageBoxIcon.Information);

  • 跳出一個MessageBox,告訴使用者已經下載完成了

聽過了上面那個,接下來講的這個上/下載FTP的檔案的程式,相信會比較好理解!

請先把表單和元件名稱配置成如下圖:

請注意,還有一個對話視窗和工作列

設置好請看程式碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace WebClientFTP
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void btnSelect_Click(object sender, EventArgs e)
    {
      saveFileDialog1.Filter = "All files (*.*)|*.*";
      saveFileDialog1.OverwritePrompt = false;
      saveFileDialog1.Title = "Select File";

      if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        txtLocal.Text = saveFileDialog1.FileName;
    }

    private void btnDownloadFile_Click(object sender, EventArgs e)
    {
      string address = "";
      string remotefile = "";
      string localfile = "";

      if (!txtURL.Text.StartsWith("ftp://"))
        address = "ftp://" + txtURL.Text;
      else
        address = txtURL.Text;

這邊的程式碼還沒完,直接接下一篇
因為有9k字,超過5k字限制,

等待約5分鐘,我就會發下一篇了哭來了~
但如果你覺得本文不錯先推文再去好不好?Orzhttp://ithelp.ithome.com.tw/question/10052461

若本篇對你有幫助,請幫忙推個文,看我打老半天的分上吧Orz毆飛

全系列[http://ithelp.ithome.com.tw/event/ironmanarticle3/id/20033582
](http://ithelp.ithome.com.tw/event/ironmanarticle3/id/20033582&lt;br />
)
上一篇< http://ithelp.ithome.com.tw/question/10052177>
緊接的下一篇http://ithelp.ithome.com.tw/question/10052461


上一篇
VC# 網路(遊戲)程式設計 由淺入深(3)- System.Net.WebClient說明與實作(1)
下一篇
VC# 網路(遊戲)程式設計 由淺入深(4)-System.Net.WebClient說明與實作(2-2實作)
系列文
VC# 網路(遊戲)程式設計 由淺入深15

2 則留言

0
kradark
iT邦好手 1 級 ‧ 2010-10-07 00:05:54

好文章...高手!!!!

看更多先前的回應...收起先前的回應...

那幫我推一下文你說好不好暈
不是FB那個推..我是說分享內容右邊那個哦無言

kradark iT邦好手 1 級‧ 2010-10-07 00:25:06 檢舉

有甚麼問題!

jason860421提到:
那幫我推一下

推倒嗎? 我很樂意的臉紅

我是男的哦無言

如果2-2覺得不錯,一起推吧哭

(2-2就是直接接這篇的下一篇.說過因為字數問題..|||翻桌)

0
hk09890433
iT邦新手 5 級 ‧ 2010-10-07 00:20:50

哇,打這麼多呀,辛苦了..暈

雖然看不太懂臉紅但是兩篇都給你推一下好了拍手

我要留言

立即登入留言