WebClient.DownloadFile同时下载几百个微信号月入万元网络链接

WebClient(1)
.Net2.0中新增了很多组件,WebClient就是其中一个,功能也很强大,今天拿WebClient做了一个小实验,只用到了一些很简单的功能就可以实现以前不好实现的功能,很方便。
&&&&简单介绍一下WebClient:
&&&&WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。
&&&&WebClient 类使用 WebRequest 类提供对资源的访问。WebClient 实例可以通过任何已向 WebRequest.RegisterPrefix 方法注册的 WebRequest 子代访问数据。
&&&&默认情况下,.NET Framework 支持以 http:、https:、ftp:、和 file: 方案标识符开头的 URI。&
&&&&下面描述用于将数据上载到资源的 WebClient 方法:&
&&&&OpenWrite&&检索一个用于将数据发送到资源的 Stream。
&&&&OpenWriteAsync&&检索 Stream,它在不阻止调用线程的情况下将数据发送到资源。
&&&&UploadData&&将字节数组发送到资源,并返回包含任何响应的 Byte 数组。
&&&&UploadDataAsync&&在不阻止调用线程的情况下,将 Byte 数组发送到资源。
&&&&UploadFile&&将本地文件发送到资源,并返回包含任何响应的 Byte 数组。
&&&&UploadFileAsync&&在不阻止调用线程的情况下,将本地文件发送到资源。
&&&&UploadValues&&将 NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
&&&&UploadValuesAsync&&在不阻止调用线程的情况下,将 NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
&&&&UploadString&&在不阻止调用线程的情况下,将 String 发送到资源。
&&&&UploadStringAsync&&在不阻止调用线程的情况下,将 String 发送到资源。&
&&&&下面描述从资源下载数据的 WebClient 方法:&
&&&&OpenRead&&从资源以 Stream 的形式返回数据。
&&&&OpenReadAsync&&在不阻止调用线程的情况下,从资源返回数据。
&&&&DownloadData&从资源下载数据并返回 Byte 数组。
&&&&DownloadDataAsync&&在不阻止调用线程的情况下,从资源下载数据并返回 Byte 数组。
&&&&DownloadFile&&从资源将数据下载到本地文件。
&&&&DownloadFileAsync&&在不阻止调用线程的情况下,将数据从资源下载到本地文件。
&&&&DownloadString&&从资源下载 String 并返回 String。
&&&&DownloadStringAsync&&在不阻止调用线程的情况下,从资源下载 String。&
&&&&您可以使用 CancelAsync 方法取消尚未完成的异步操作。
&&&&默认情况下,WebClient 实例不发送可选的 HTTP 报头。如果您的请求需要可选报头,必须将该报头添加到 Headers 集合。例如,要在响应中保留查询,必须添加用户代理报头。此外,如果用户代理标头丢失,服务器可能返回 500(内部服务器错误)。
&&&&在 WebClient 实例中,AllowAutoRedirect 设置为 true。
&&&&给继承者的说明派生类应调用 WebClient 的基类实现,以确保派生类按预期方式工作。
&&&&实现源码为:
using&Susing&System.Collections.Gusing&<ponentMusing&System.Dusing&System.Dusing&System.Tusing&System.Windows.Fusing&System.Nusing&System.IO;
namespace&wiindowsFormsApplication{ &&&&public&partial&class&Form1&:&Form&&&&{ &&&&&&&&public&Form1()&&&&&&&&{ &&&&&&&&&&&&InitializeComponent();&&&&&&&&&&&&this.textBox1.Text&=&@&由于原作者的下载地址好&#20284;不能下载了&
所以我替换了一个搜狗输入法的下载地址& &;&&&&&&&&}
&&&&&&&&WebClient&webClient&=&new&WebClient();&&&&&&&&private&void&btn_down_Click(object&sender,&EventArgs&e)&&&&&&&&{ &&&&&&&&&&&&&&&&&&&&&&&&if&(webClient.IsBusy)//是否存在正在进行中的Web请求&&&&&&&&&&&&{&&&&&&&&&&&&&&&&webClient.CancelAsync();&&&&&&&&&&&&}&&&&&&&&&&&&//为webClient添加事件&&&&&&&&&&&&webClient.DownloadProgressChanged&&#43;=new&DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);&&&&&&&&&&&&webClient.DownloadFileCompleted&#43;=new&AsyncCompletedEventHandler(webClient_DownloadFileCompleted);&&&&&&&&&&&&//开始下载&&&&&&&&&&&&webClient.DownloadFileAsync(new&Uri(this.textBox1.Text),&&aa.rar&);&&&&&&&&} &&&&&&&& &&&&&&&&private&void&webClient_DownloadProgressChanged(object&sender,&DownloadProgressChangedEventArgs&e)&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&this.progressBar1.Value&=&e.ProgressP&&&&&&&&&&&&this.lbl_pro.Text&=&e.ProgressPercentage.ToString()&&#43;&&%&;&&&&&&&&&&&&this.lbl_detail.Text&=&string.Format(&正在下载文件,完成进度{0}/{1}(字节)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,e.BytesReceived&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,e.TotalBytesToReceive);&&&&&&&&}
&&&&&&&&private&void&webClient_DownloadFileCompleted(object&sender,&AsyncCompletedEventArgs&e)&&&&&&&&{ &&&&&&&&&&&&if&(e.Cancelled)&&&&&&&&&&&&&&&&MessageBox.Show(&下载被取消!&);&&&&&&&&&&&&else&&&&&&&&&&&&&&&&MessageBox.Show(&下载完成!&);&&&&&&&&}
&&&&&&&&private&void&btn_cancel_Click(object&sender,&EventArgs&e)&&&&&&&&{ &&&&&&&&&&&&this.webClient.CancelAsync();&&&&&&&&&&&&this.webClient.Dispose();&&&&&&&&} &&&&} }
运行界面:
我在使用过程中 发现原作者未给出本地下载的&#26684;式&&& 所以我补充下
如果是本机下载&& 只需要数据文件路径即可
例如 G:/a.docx&
如果是局域网内下载:首先需要将下载文件所在的电脑设置共享& 即共享该文件
例如&&&Test.docx&&& \\是访问共享的必备条件& 192.168.0.83为服务端ip&&& 测试为服务端共享的文件夹名称& Test.docx为需要下载的文件名称
本文转载自
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:95583次
积分:1255
积分:1255
排名:千里之外
原创:30篇
转载:49篇
评论:17条
(2)(2)(2)(1)(3)(2)(3)(2)(8)(3)(3)(3)(10)(3)(5)(1)(5)(9)(7)(2)(5)使用WebClient实现文件下载
.Net2.0中新增了很多组件,WebClient就是其中一个,功能也很强大,今天拿WebClient做了一个小实验,只用到了一些很简单的功能就可以实现以前不好实现的功能,很方便。
&&&&简单介绍一下WebClient:
&&&&WebClient
类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。
&&&&WebClient
类使用 WebRequest 类提供对资源的访问。WebClient 实例可以通过任何已向
WebRequest.RegisterPrefix 方法注册的 WebRequest 子代访问数据。
&&&&默认情况下,.NET
Framework 支持以 http:、https:、ftp:、和 file: 方案标识符开头的
&&&&下面描述用于将数据上载到资源的
WebClient 方法:&
&&&&OpenWrite&&检索一个用于将数据发送到资源的
&&&&OpenWriteAsync&&检索
Stream,它在不阻止调用线程的情况下将数据发送到资源。
&&&&UploadData&&将字节数组发送到资源,并返回包含任何响应的
Byte 数组。
&&&&UploadDataAsync&&在不阻止调用线程的情况下,将
Byte 数组发送到资源。
&&&&UploadFile&&将本地文件发送到资源,并返回包含任何响应的
Byte 数组。
&&&&UploadFileAsync&&在不阻止调用线程的情况下,将本地文件发送到资源。
&&&&UploadValues&&将
NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
&&&&UploadValuesAsync&&在不阻止调用线程的情况下,将
NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
&&&&UploadString&&在不阻止调用线程的情况下,将
String 发送到资源。
&&&&UploadStringAsync&&在不阻止调用线程的情况下,将
String 发送到资源。&
&&&&下面描述从资源下载数据的
WebClient 方法:&
&&&&OpenRead&&从资源以
Stream 的形式返回数据。
&&&&OpenReadAsync&&在不阻止调用线程的情况下,从资源返回数据。
&&&&DownloadData&从资源下载数据并返回
Byte 数组。
&&&&DownloadDataAsync&&在不阻止调用线程的情况下,从资源下载数据并返回
Byte 数组。
&&&&DownloadFile&&从资源将数据下载到本地文件。
&&&&DownloadFileAsync&&在不阻止调用线程的情况下,将数据从资源下载到本地文件。
&&&&DownloadString&&从资源下载
String 并返回 String。
&&&&DownloadStringAsync&&在不阻止调用线程的情况下,从资源下载
&&&&您可以使用
CancelAsync 方法取消尚未完成的异步操作。
&&&&默认情况下,WebClient
实例不发送可选的 HTTP 报头。如果您的请求需要可选报头,必须将该报头添加到 Headers
集合。例如,要在响应中保留查询,必须添加用户代理报头。此外,如果用户代理标头丢失,服务器可能返回
500(内部服务器错误)。
WebClient 实例中,AllowAutoRedirect 设置为 true。
&&&&给继承者的说明
派生类应调用 WebClient 的基类实现,以确保派生类按预期方式工作。
&&&&实现源码为:
using&System.Collections.G
using&<ponentM
using&System.D
using&System.D
using&System.T
using&System.Windows.F
using&System.N
using&System.IO;
namespace&wiindowsFormsApplication
&&&&public&partial&class&Form1&:&Form
&&&&&&&&public&Form1()
&&&&&&&&&&&&InitializeComponent();
&&&&&&&&&&&&this.textBox1.Text&=&@"http://dl-sh-ocn-1.pchome.net/0d/bx/koomail50b8.rar";
&&&&&&&&WebClient&webClient&=&new&WebClient();
&&&&&&&&private&void&btn_down_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&
&&&&&&&&&&&&if&(webClient.IsBusy)//是否存在正在进行中的Web请求
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&webClient.CancelAsync();
&&&&&&&&&&&&}
&&&&&&&&&&&&//为webClient添加事件
&&&&&&&&&&&&webClient.DownloadProgressChanged&+=new&DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
&&&&&&&&&&&&webClient.DownloadFileCompleted+=new&AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
&&&&&&&&&&&&//开始下载
&&&&&&&&&&&&webClient.DownloadFileAsync(new&Uri(this.textBox1.Text),&"aa.rar");
&&&&&&&&private&void&webClient_DownloadProgressChanged(object&sender,&DownloadProgressChangedEventArgs&e)
&&&&&&&&{&&&&&&&&&&&&
&&&&&&&&&&&&this.progressBar1.Value&=&e.ProgressP
&&&&&&&&&&&&this.lbl_pro.Text&=&e.ProgressPercentage.ToString()&+&"%";
&&&&&&&&&&&&this.lbl_detail.Text&=&string.Format("正在下载文件,完成进度{0}/{1}(字节)"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,e.BytesReceived
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,e.TotalBytesToReceive);
&&&&&&&&private&void&webClient_DownloadFileCompleted(object&sender,&AsyncCompletedEventArgs&e)
&&&&&&&&&&&&if&(e.Cancelled)
&&&&&&&&&&&&&&&&MessageBox.Show("下载被取消!");
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&MessageBox.Show("下载完成!");
&&&&&&&&private&void&btn_cancel_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&this.webClient.CancelAsync();
&&&&&&&&&&&&this.webClient.Dispose();
运行界面:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我用C#做一个网站,从远程服务器下载一个TXT文件,但是将网站布置到IIS上之后,下载功能出错了,也就是不能下载了。但是我本机测试的时候还是正常,这个是什么原因呢?而且在IIS上的MIME也支持TXT文件下载。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
问问题记得贴异常信息。检查下文件保存目录iis-user有没有写入权限
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:}

我要回帖

更多关于 好几百个教授 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信