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);

       }

    
    }
}

 


本文转自tiasys博客园博客,原文链接:http://www.cnblogs.com/tiasys/archive/2010/08/09/1795858.html,如需转载请自行联系原作者

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
2月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
50 3
QGS
|
4月前
|
前端开发 easyexcel Java
手拉手EasyExcel实现web上传下载(全栈)
EasyExcel实现web上传下载
QGS
71 2
|
5月前
|
数据库
如何在web.config文件中配置连接Access数据库?
如何在web.config文件中配置连接Access数据库?
34 0
|
6月前
|
前端开发 UED
关于 Web 应用的内联 css 和 scss 文件里的 var 关键字用法
关于 Web 应用的内联 css 和 scss 文件里的 var 关键字用法
75 0
|
1月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
124 1
|
2月前
|
存储 数据库 Python
Django教程第6章 | web开发实战-文件上传(导入文件、上传图片)
web应用实战:导入文件解析到DB,上传图片【2月更文挑战第25天】
56 0
Django教程第6章 | web开发实战-文件上传(导入文件、上传图片)
|
3月前
springmvc web.xml文件配置中文编码过滤器
springmvc web.xml文件配置中文编码过滤器
|
4月前
|
安全 中间件 应用服务中间件
ctfshow-web4(文件包含&日志注入)
ctfshow-web4(文件包含&日志注入)
78 0
|
5月前
|
PHP
.htaccess web php 文件详解
.htaccess web php 文件详解
22 0
|
5月前
|
前端开发 JavaScript Python
使用Python读取本地行情csv文件,做出web网页画出K线图实现案例
使用Python读取本地行情csv文件,做出web网页画出K线图实现案例