110,549
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 下载文件函数
/// </summary>
/// <param name="url">文件地址</param>
/// <param name="sSaveDir">保存下载文件的目录</param>
/// <returns>是否成功</returns>
public static bool StartDownload(string url,string sSaveDir,string sFileName)
{
string LocalPath = sSaveDir +"\\"+ sFileName;
if (Directory.Exists(sSaveDir)==false)
{
Directory.CreateDirectory(sSaveDir);
}
try
{
Uri u = new Uri(url);
HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u);
mRequest.Method = "GET";
mRequest.ContentType = "application/x-www-form-urlencoded";
mRequest.Timeout = 30000;
HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse();
Stream sIn = wr.GetResponseStream();
FileStream fs = new FileStream(LocalPath, FileMode.Create, FileAccess.Write);
long length = wr.ContentLength;
long i = 0;
decimal j=0;
int nReadLen = 0 ;
while (i < length)
{
byte[] buffer = new byte[1024];
nReadLen = sIn.Read(buffer, 0, buffer.Length);
if (nReadLen<1024)
{
Console.WriteLine("读取的数据为"+nReadLen+"个字节!!!");
}
i += nReadLen;
fs.Write(buffer, 0, nReadLen );
if((i % 1024)==0)
{
j=Math.Round(Convert.ToDecimal((Convert.ToDouble(i)/Convert.ToDouble(length))*100),4);
Console.WriteLine("当前下载文件大小:"+length.ToString()+"字节 当前下载大小:"+i+"字节 下载进度"+j.ToString()+"%");
}
else
{
Console.WriteLine("当前下载文件大小:"+length.ToString()+"字节 当前下载大小:"+i+"字节");
}
}
sIn.Close();
wr.Close();
fs.Close();
return true;
}
catch(System.Exception ex)
{
Console.WriteLine(ex.Message);
HJG.HJGClass.LogTxt("文件地址:\t"+url+ex.Message,true);
return false;
}
}