带进度条下载文件(MP3) [英] Download file(MP3) with progressbar
问题描述
是否有在线样品?
Any sample(s) online?
(我不需要流式传输)
推荐答案
私人
布尔型 DownloadFile( 字符串 sURL, ProgressBar pProgress 字符串 文件名)
private
bool DownloadFile(string sURL, ProgressBar pProgress, string Filename)
{
System.Net. HttpWebRequest URLReq;
System.Net.HttpWebRequest URLReq;
System.Net. HttpWebResponse URLRes;
System.Net.HttpWebResponse URLRes;
System.IO. FileStream FileStreamer;
System.IO.FileStream FileStreamer;
byte [] bBuffer = 新 字节 [1024];
byte[] bBuffer = new byte[1024];
int iBytesRead = 0;
int iBytesRead = 0;
尝试
try
{
FileStreamer = 新 FileStream (文件名,System.IO. FileMode .Create);
FileStreamer = new FileStream(Filename, System.IO.FileMode.Create);
URLReq =( HttpWebRequest )System.Net. WebRequest .Create(sURL);
URLReq = (HttpWebRequest)System.Net.WebRequest.Create(sURL);
URLRes =( HttpWebResponse )URLReq.GetResponse();
URLRes = (HttpWebResponse)URLReq.GetResponse();
流 sChunks = URLReq.GetResponse().GetResponseStream();
Stream sChunks = URLReq.GetResponse().GetResponseStream();
pProgress.Maximum = 转换 .ToInt32(URLRes.ContentLength);
pProgress.Maximum = Convert.ToInt32(URLRes.ContentLength);
做
do
{
iBytesRead = sChunks.Read(bBuffer,0,1024);
iBytesRead = sChunks.Read(bBuffer, 0, 1024);
FileStreamer.Write(bBuffer,0,iBytesRead);
FileStreamer.Write(bBuffer, 0, iBytesRead);
如果 (pProgress.Value + iBytesRead< = pProgress.Maximum)
if (pProgress.Value + iBytesRead <= pProgress.Maximum)
{
pProgress.Value + = iBytesRead;
pProgress.Value += iBytesRead;
应用程序 .DoEvents();
Application.DoEvents();
}
其他
else
{
pProgress.Value = pProgress.Maximum;
pProgress.Value = pProgress.Maximum;
}
}
而 (iBytesRead!= 0);
while (iBytesRead != 0);
pProgress.Value = pProgress.Maximum;
pProgress.Value = pProgress.Maximum;
sChunks.Close();
sChunks.Close();
FileStreamer.Close();
FileStreamer.Close();
返回 true ;
return true;
}
捕获 ( 例外字体> ee)
catch (Exception ee)
{
MessageBox .Show(ee.Message);
MessageBox.Show(ee.Message);
返回 否 ;
return false;
}
}
这篇关于带进度条下载文件(MP3)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!