zoukankan      html  css  js  c++  java
  • download,C#, HttpWebRequest,FolderBrowserDialog

    使用WebClient实现下载
    http://www.zj55.net/article/html/s816/34566.htm


    <xmp>
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.IO;
    using System.Net;
    using System.Threading;
    namespace DownLoad
    {
     /// <summary>
     /// Form1 的摘要说明。
     /// </summary>
     public class Form1 : System.Windows.Forms.Form
     {
      private System.Windows.Forms.Label label1;
      private System.Windows.Forms.Label label2;
      private System.Windows.Forms.TextBox txtURI;
      private System.Windows.Forms.TextBox txtPath;
      private System.Windows.Forms.Button btnSelect;
      private System.Windows.Forms.Button btnDownLoad;
      private System.Windows.Forms.StatusBar stBar;
      private System.Windows.Forms.FolderBrowserDialog folderBD;
      //使用WebClient的方法以实现文件的下载
      private WebClient client=new WebClient();
      /// <summary>
      /// 必需的设计器变量。
      /// </summary>
      private System.ComponentModel.Container components = null;

      public Form1()
      {
       //
       // Windows 窗体设计器支持所必需的
       //
       InitializeComponent();

       //
       // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
       //
      }

      /// <summary>
      /// 清理所有正在使用的资源。
      /// </summary>
      protected override void Dispose( bool disposing )
      {
       if( disposing )
       {
        if (components != null)
        {
         components.Dispose();
        }
       }
       base.Dispose( disposing );
      }

      #region Windows 窗体设计器生成的代码
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {
       this.label1 = new System.Windows.Forms.Label();
       this.label2 = new System.Windows.Forms.Label();
       this.txtURI = new System.Windows.Forms.TextBox();
       this.txtPath = new System.Windows.Forms.TextBox();
       this.folderBD = new System.Windows.Forms.FolderBrowserDialog();
       this.btnSelect = new System.Windows.Forms.Button();
       this.btnDownLoad = new System.Windows.Forms.Button();
       this.stBar = new System.Windows.Forms.StatusBar();
       this.SuspendLayout();
       //
       // label1
       //
       this.label1.Location = new System.Drawing.Point(8, 24);
       this.label1.Name = "label1";
       this.label1.Size = new System.Drawing.Size(96, 23);
       this.label1.TabIndex = 0;
       this.label1.Text = "下载文件的URI:";
       //
       // label2
       //
       this.label2.Location = new System.Drawing.Point(16, 64);
       this.label2.Name = "label2";
       this.label2.Size = new System.Drawing.Size(88, 23);
       this.label2.TabIndex = 1;
       this.label2.Text = "本地保存路径:";
       //
       // txtURI
       //
       this.txtURI.Location = new System.Drawing.Point(112, 25);
       this.txtURI.Name = "txtURI";
       this.txtURI.Size = new System.Drawing.Size(208, 21);
       this.txtURI.TabIndex = 2;
       this.txtURI.Text = "";
       //
       // txtPath
       //
       this.txtPath.Location = new System.Drawing.Point(112, 65);
       this.txtPath.Name = "txtPath";
       this.txtPath.Size = new System.Drawing.Size(208, 21);
       this.txtPath.TabIndex = 3;
       this.txtPath.Text = "";
       //
       // btnSelect
       //
       this.btnSelect.Location = new System.Drawing.Point(328, 64);
       this.btnSelect.Name = "btnSelect";
       this.btnSelect.TabIndex = 4;
       this.btnSelect.Text = "选择路径...";
       this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
       //
       // btnDownLoad
       //
       this.btnDownLoad.Location = new System.Drawing.Point(112, 104);
       this.btnDownLoad.Name = "btnDownLoad";
       this.btnDownLoad.TabIndex = 5;
       this.btnDownLoad.Text = "下载";
       this.btnDownLoad.Click += new System.EventHandler(this.btnDownLoad_Click);
       //
       // stBar
       //
       this.stBar.Location = new System.Drawing.Point(0, 184);
       this.stBar.Name = "stBar";
       this.stBar.Size = new System.Drawing.Size(424, 22);
       this.stBar.TabIndex = 6;
       //
       // Form1
       //
       this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
       this.ClientSize = new System.Drawing.Size(424, 206);
       this.Controls.Add(this.stBar);
       this.Controls.Add(this.btnDownLoad);
       this.Controls.Add(this.btnSelect);
       this.Controls.Add(this.txtPath);
       this.Controls.Add(this.txtURI);
       this.Controls.Add(this.label2);
       this.Controls.Add(this.label1);
       this.Name = "Form1";
       this.Text = "Form1";
       this.ResumeLayout(false);

      }
      #endregion

      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main()
      {
       Application.Run(new Form1());
      }

      private void btnSelect_Click(object sender, System.EventArgs e)
      {
       if(folderBD.ShowDialog()==DialogResult.Cancel)
       {
        return;
       }
       txtPath.Text=folderBD.SelectedPath;
      }

      private void btnDownLoad_Click(object sender, System.EventArgs e)
      {
       //开启线程,以改善用户体验.
       Thread th=new Thread(new ThreadStart(StartDownLoad));
       //th.Name="New DownLoad";
       th.Start();
      }
      private void StartDownLoad()
      {
       string url=string.Empty;
       string fileName=string.Empty;
       int n=0;
       string path=string.Empty;

       btnDownLoad.Enabled=false;
       url=txtURI.Text;
       n=url.LastIndexOf('/');
       fileName=url.Substring(n+1);
       path=txtPath.Text+"
    \\"+fileName;

       try
       {
        WebRequest request=WebRequest.Create(url);
       }
       catch(WebException ex)
       {
        MessageBox.Show(ex.Message,"Error");
       }

       try
       {
        stBar.Text="开始下载文件...";
        client.DownloadFile(url,path);
        stBar.Text="下载完毕,文件已经保存到"+path.ToString();
       }
       catch(WebException ex)
       {
        MessageBox.Show(ex.Message,"Error");
        stBar.Text=string.Empty;
       }
       finally
       {
        btnDownLoad.Enabled=true;
       }
      }
     }
    }

  • 相关阅读:
    Chrome 无法登录 GitHub,响应时间过长,可行解决办法
    npm install报错 npm ERR! cb() never called! 检查镜像源!
    Win10 移动文件的时候“卡”在“正在暂停/取消”解决办法
    VS code 彻底关闭插件自动更新功能
    箭头函数 函数中的this指向
    ES6 ES6变量的声明
    范围内的拖拽事件
    div拖拽移动事件
    事件对象的属性 div点击移动事件
    tab切换之循环遍历
  • 原文地址:https://www.cnblogs.com/cy163/p/204943.html
Copyright © 2011-2022 走看看