• Web下载文件


    IE浏览器在打开swf、wma等文件的时候会自动打开,如果想下载到本地存储就不太方便,为此我自己做一个小程序用来下载文件,

    由于我在局域网内使用代理服务器上网,所以下载文件还需要通过代理设置。

    程序截图:

    下载按钮事件的代码:

    private void buttonDownload_Click(object sender, EventArgs e)
            {


                TIMMS.DATA.TWebClient wc = new TIMMS.DATA.TWebClient();
                if (checkBox1.Checked)
                {
                    wc.ProxyUserName = textBoxUsername.Text;
                    wc.ProxyPassword = textBoxPassword.Text;
                    wc.ProxyDomainName = textBoxDomainname.Text;
                }
                wc.ProxyUrl = textBoxUrl.Text;

                SaveFileDialog saveFileDialog = new SaveFileDialog();
                int indexof=textBoxUrl.Text.LastIndexOf("/")+1;
                int length=textBoxUrl.Text.Length;
                string filename=textBoxUrl.Text.Substring(indexof, (length - indexof));
                string file_extension = System.IO.Path.GetExtension(filename);

                saveFileDialog.FileName = filename;
                saveFileDialog.Filter = "文件 (*" + file_extension + ")|*" + file_extension + "|所有文件|*.*";

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    wc.FileName = saveFileDialog.FileName;
                }
               
                string errmsg="";

                Cursor.Current = Cursors.WaitCursor;
                buttonDownload.Enabled = false;
                if (!wc.GetFile(out errmsg))
                {
                    MessageBox.Show(errmsg, "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                  
                    buttonDownload.Enabled = true;
                    Cursor.Current = Cursors.Default;
                    return;
                }

                buttonDownload.Enabled = true;
                Cursor.Current = Cursors.Default;
                MessageBox.Show("下载完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information );

            }

     TIMMS.DATA.TWebClient :

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;

    namespace TIMMS.DATA
    {
       public  class TWebClient
        {
          /// <summary>
          /// 供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法
          /// </summary>
           public TWebClient() { }

           /// <summary>
           /// TWebClient构造函数
           /// </summary>
           /// <param name="user">代理服务器用户名</param>
           /// <param name="password">代理服务器登录密码</param>
           /// <param name="domainName">代理服务器域名</param>
           /// <param name="Address">代理服务器地址</param>
           /// <param name="url">需要下载的Web文件路径</param>
           /// <param name="filename">保存到本地的文件名</param>
           public  TWebClient(string user,string password,string domainName,string Address,string url,string filename)
           {
               proxyUser=user;
               ProxyPassword=password;
               proxyDomainName=domainName;
               proxyAddress = Address;
               proxyUrl = url;
               fileName = filename;
           }

           /// <summary>
           ///  TWebClient构造函数,使用IE默认代理设置
           /// </summary>
           /// <param name="user">代理服务器用户名</param>
           /// <param name="password">代理服务器登录密码</param>
           /// <param name="domainName">代理服务器域名</param>
           /// <param name="url">需要下载的Web文件路径</param>
           /// <param name="filename">保存到本地的文件名</param>
           public  TWebClient(string user, string password, string domainName, string url, string filename)
           {
               proxyUser = user;
               ProxyPassword = password;
               proxyDomainName = domainName;
               proxyUrl = url;
               fileName = filename;
           }

           /// <summary>
           /// WebClient构造函数,使用IE默认代理设置
           /// </summary>
           /// <param name="user">代理服务器用户名</param>
           /// <param name="password">代理服务器登录密码</param>
           /// <param name="domainName">代理服务器域名</param>
           public  TWebClient(string user, string password, string domainName)
           {
               proxyUser = user;
               ProxyPassword = password;
               proxyDomainName = domainName;
           }

           /// <summary>
           /// TWebClient构造函数
           /// </summary>
           /// <param name="url">需要下载的Web文件路径</param>
           /// <param name="filename">保存到本地的文件名</param>
           public TWebClient(string url, string filename)
           {
               proxyUrl = url;
               fileName = filename;
           }

      

            private  string proxyUser = "";
            /// <summary>
            /// 代理服务器用户名
            /// </summary>
            public  string ProxyUserName
            {
                get { return proxyUser; }
                set { proxyUser = value; }
            }

            private  string proxyPassword = "";
            /// <summary>
            /// 代理服务器用户密码
            /// </summary>
            public  string ProxyPassword
            {
                get { return proxyPassword; }
                set { proxyPassword = value; }
            }
            private  string proxyDomainName = "";
            /// <summary>
            /// 代理服务器域名
            /// </summary>
            public  string ProxyDomainName
            {
                get { return proxyDomainName; }
                set { proxyDomainName = value; }
            }


            private  string proxyAddress;
            /// <summary>
            /// 代理服务器地址http://172.16.102.15:8080/
            /// 默认与IE设置相同
            /// </summary>
            public  string ProxyAddress
            {
                get { return proxyAddress; }
                set { proxyAddress = value; }
            }

           private  string proxyUrl = "http://www.baidu.com/img/baidu_logo.gif";
            /// <summary>
           /// 代理服务器访问地址,默认:"http://www.baidu.com/img/baidu_logo.gif"
            /// </summary>
            public  string ProxyUrl
            {
                get { return proxyUrl; }
                set { proxyUrl = value; }
            }

           private  string fileName = "";
            /// <summary>
           /// 下载文件的文件名(包含路径)@"d:\baidu_logo.gif";
            /// </summary>
            public  string FileName
            {
                get { return fileName; }
                set { fileName = value; }
            }

           /// <summary>
           /// 根据TWebClient设置获取并保存文件
           /// </summary>
           /// <param name="errmsg"></param>
           /// <returns></returns>
            public  bool GetFile(out string errmsg)
            {
                try
                {
                    WebClient wc = new WebClient();
                  
                    WebProxy proxy = WebProxy.GetDefaultProxy();//获取IE缺省设置
                    //如果缺省设置为空,则有可能是根本不需要代理服务器,如果此时配置文件中也未配置则认为不需Proxy
                    if (proxy.Address == null && proxyAddress != null && proxyAddress != "")
                        proxy.Address = new Uri(proxyAddress);//按配置文件创建Proxy 地置

                    if (proxy.Address != null)//如果地址为空,则不需要代理服务器
                    {
                        proxy.Credentials = new NetworkCredential(proxyUser, proxyPassword, proxyDomainName);//从配置封装参数中创建
                        wc.Proxy = proxy;//request.Proxy = proxy;//赋予 request.Proxy
                    }

                    wc.DownloadFile(proxyUrl, fileName);//下载文件并保存

                    errmsg = "OK";
                    return true;
                }
                catch (Exception ex)
                {
                    errmsg = ex.Message;
                    return false;
                }
            }


           /// <summary>
            ///  根据TWebClient设置获取并保存文件
           /// </summary>
            /// <param name="url">需要下载的Web文件路径</param>
            /// <param name="filename">保存到本地的文件名</param>
           /// <param name="errmsg">错误消息</param>
           /// <returns>成功true/失败false</returns>
           public bool GetFile(string url, string filename,out string errmsg)
           {
               proxyUrl = url;
               fileName = filename;
               return GetFile(out errmsg);

           }

       
        }
    }

    分享到: 更多
  • 相关阅读:
    UVa 481
    ZOJ 1108 & HDU 1160
    UVa 11450
    UVa 11242
    UVa 750
    UVa 725
    UVa 483
    UVa 10258
    UVa 793
    The Little Girl who Picks Mushrooms HDU 4422 水题类似模拟的一种感觉
  • 原文地址:https://www.cnblogs.com/tiasys/p/1795858.html
Copyright © 2020-2023  润新知