源码下载:点我下载
以前上网下图片时,都是要一张一张的打开,再一张一张的另存为,感觉很麻烦!
网上也没找到适合自己的下载器,随意就自己写了一个批量下载。
毕竟学编程没多久,多写写对自己还是很有好处的,程序还有待完善~~
主要学习使用WebClient类的相关方法,以及将之前的批量重命名模块使用起来!
目前下载器主要是针对有规律且连续的网址进行下载,暂不支持html。
下载器大致的流程如下:
例如有以下几张图片
http://img1.gtimg.com/3/324/32493/3249386_550x550_0.jpg
http://img1.gtimg.com/3/324/32493/3249387_550x550_0.jpg
http://img1.gtimg.com/3/324/32493/3249388_550x550_0.jpg
...这些图片编号都是连续的
这样的话利用批量重命名模块的模板功能即可实现
模板:http://img1.gtimg.com/3/324/32493/32493##_550x550_0.jpg
范围:86 - 90
这样变生成了5张图片的网址,最后只需要使用WebClient类的相关方法来实现下载即可
WebClient类主要有两种方法实现下载,单步和异步
- 单步方法是调用DownloadFile函数实现。
- 异步方法是调用DownloadFileAsync函数实现,并使用了2个事件DownloadProgressChanged、DownloadFileCompleted。
- DownloadProgressChanged事件,用于获取一个文件下载中的相关信息。
- DownloadFileCompleted事件则是当一个文件下载完成后触发。
string savePath = "C:\1"
WebClient client = new WebClient();
if (Async)
{
// 异步下载
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
client.DownloadFileAsync(new Uri(url), savePath);
}
else
{
client.DownloadFile(new Uri(url), savePath);
}
private void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
// 处理下载过程中
// e.BytesReceived - 当前接受多少字节
// e.TotalBytesToReceive - 待下载文件的大小
// e.ProgressPercentage - 下载完成度(百分比)
}
private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
// 处理下载完成后
}
下载器运行