62,046
社区成员
发帖
与我相关
我的任务
分享
public static void DownFile(string url, string fileName)
{
//本地文件
if (!Directory.Exists("c:\\temp"))
{
//DirectoryInfo实例方法和静态方法的区别
Directory.CreateDirectory("c:\\temp");
}
string fileClientPath = "c:\\temp\\" + fileName;
long IStartPos = 0;
FileStream fs;
if (File.Exists(fileClientPath))
{
fs = File.OpenWrite(fileClientPath);
IStartPos = fs.Length;
fs.Seek(IStartPos, SeekOrigin.Current);
//断点续传点
}
else
{
//新建文件
fs = new FileStream(fileClientPath, FileMode.Create);
IStartPos = 0;
}
//请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
if (IStartPos > 0)
{
request.AddRange(IStartPos);
}
request.Timeout = 600000;
request.KeepAlive = true;
//最大连接数
ServicePointManager.DefaultConnectionLimit = 512;
//响应
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
////响应url
//string ruri=response.ResponseUri.ToString();
//MessageBox.Show(ruri);
//获取进度条总长度
long totalBytes = response.ContentLength;
//搭建连接url文件的桥梁
Stream st = response.GetResponseStream();
//运输工具
byte[] buffer = new byte[1024];
//搭建创建本地文件的桥梁
Stream so =fs;
//运输进度
int totalDownedBytes = 0;
//运输过程
int osize = st.Read(buffer, 0, buffer.Length);
so.Write(buffer, 0, buffer.Length);
while (osize > 0)
{
totalDownedBytes += osize;
try
{
osize = st.Read(buffer, 0, buffer.Length);
if (osize != 0)
{
so.Write(buffer, 0, osize);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
break;
}
}
MessageBox.Show("下载完毕");
//Application.Exit();
fs.Close();
st.Close();
so.Close();
request.Abort();
response.Close();
}