c# WebClient文件下载
public void HttpDownload(string url, string path, ResourceType type)
{
using (var client = new WebClient())
{
client.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
var stream = client.OpenRead(url);
if (type == ResourceType.Document)
{
var header = client.ResponseHeaders["Content-Disposition"];
var subStr = header.Split('=');
var fileName = System.Web.HttpUtility.UrlDecode(subStr[1]);
path = GetFileValidation(path, fileName, out fileName);
}
FileStream writeStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
ReadWriteStream(stream, writeStream);
}
}
private void ReadWriteStream(Stream readStream, Stream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// write the required bytes
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
//验证文件是否存在
public string GetFileValidation(string path, string oldTitle, out string newTitle)
{
string newPath = System.IO.Path.Combine(path, oldTitle.Replace("\"", ""));
string title1 = oldTitle; if (File.Exists(newPath))
{
for (int i = 1; i < int.MaxValue; i++)
{
newPath = System.IO.Path.Combine(path, oldTitle.Split('.')[0] + "(" + i + ")" + "." + oldTitle.Split('.')[1]);
if (!File.Exists(newPath))
{
title1 = oldTitle.Split('.')[0] + "(" + i + ")" + "." + oldTitle.Split('.')[1];
break;
}
else
{
continue;
}
}
}
newTitle = title1;
return newPath;
}
c# WebClient文件下载的更多相关文章
- C# 文件下载 : WebClient
最近更新了一个下载小工具,主要提升了下面几点: 1. 在一些分公司的局域网中,连接不上外网 2. 服务器上的文件更新后,下载到的还是更新前的文件 3. 没有下载进度提示 4. 不能终止下载 下面和大家 ...
- Winform文件下载之WebClient
最近升级了公司内部使用的一个下载小工具,主要提升了下面几点: 1. 在一些分公司的局域网中,连接不上外网 2. 服务器上的文件更新后,下载到的还是更新前的文件 3. 没有下载进度提示 4. 不能终止下 ...
- 使用WebClient类对网页下载源码,对文件下载保存及异步下载并报告下载进度
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAx4AAAI7CAIAAADtTtpYAAAgAElEQVR4nO3dX6xlV33Y8f3UJFUqHq
- WebClient实现文件下载详解(二)
.Net2.0中新增了很多组件,WebClient就是其中一个,功能也很强大,今天拿WebClient做了一个小实验,只用到了一些很简单的功能就可以实现以前不好实现的功能,很方便. 简单介绍一下Web ...
- C# 文件下载 : WinINet
在 C# 中,除了 WebClient 我们还可以使用一组 WindowsAPI 来完成下载任务.这就是 Windows Internet,简称 WinINet.本文通过一个 demo 来介绍 Win ...
- Winform文件下载之WinINet
在C#中,除了webclient我们还可以使用一组WindowsAPI来完成下载任务.这就是Windows Internet,简称 WinINet.本文通过一个demo来介绍WinINet的基本用法和 ...
- WebClient.DownloadFile(线程机制,异步下载文件)
线程机制(避免卡屏),异步下载文件. 我做网站的监控,WebClient.DownloadFile这个方法是我经常用到的,必要的时候肯定是要从网上下载些什么(WebRequest 也可以下载网络文件, ...
- C# 带进度条的文件下载
private long fileLength; private long downLength;//已经下载文件大小,外面想用就改成公共属性 private static bool stopDown ...
- HttpHandler与HttpModule及实现文件下载
HttpHandler:处理请求(Request)的信息和发送响应(Response).HttpModule:通过Http Module向Http请求输出流中写入文字,httpmodule先执行 它们 ...
随机推荐
- iOS RESideMenu 侧滑 第三方类库
下载地址:https://github.com/romaonthego/RESideMenu 效果如下:官方案例 自己的实现效果 具体代码下: AppDelegate.m文件中 - (BOOL)app ...
- angularjs结合d3js实现资源展示
转载请注明出处: 转载自Bin's Blog: angularjs & d3 实现资源展示( http://www.wenbin.cf/post/27/ ) angularjs结合d3js实 ...
- OracleHelper类
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...
- SqlServer数据类型
Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. n varchar(n) 可变长度的字符串.最多 8,000 个字符. varch ...
- W3School-CSS 外边距 (margin) 实例
CSS 外边距 (margin) 实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS ...
- 有关stm32的问题,程序里面的u8、u16这些是什么意思啊
u8 是 unsigned charu16 是 unsigned shortu32 是 unsigned int
- 【转】How to hire——创业公司应该如何招人
How to hire After startups raise money, their next biggest problem becomes hiring. It turns out it’ ...
- mysql5.7 root password change
mysqld_safe --skip-grant-tables &update mysql.user set authentication_string=password('Root_1234 ...
- 关于Finereport移动端报表二次开发的两个小例子
例1:刷新页面 1. 问题描述 A超链至B填报,B提交数据后返回A时,A自动刷新显示新的数据. 2. 解决方案 1. contentPane.setAppearRefresh(); //在A的加载结 ...
- Tomjson - 一个"短小精悍"的 json 解析库
Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把Java对象(JavaBean)序列化为json格式字符串,将json格式字符 ...