C# 下載帶進度條程式碼(普通進度條)
<span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> /// <summary>
/// 下載帶進度條程式碼(普通進度條)
/// </summary>
/// <param name="URL">網址</param>
/// <param name="Filename">下載後檔名為</param>
/// <param name="Prog">報告進度的處理(第一個引數:總大小,第二個引數:當前進度)</param>
/// <returns>True/False是否下載成功</returns>
public static bool DownLoadFile(string URL, string Filename, Action<int, int> updateProgress = null)
{
Stream st = null;
Stream so = null;
System.Net.HttpWebRequest Myrq =null;
System.Net.HttpWebResponse myrp = null;
bool flag = false;
try
{
Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //從URL地址得到一個WEB請求
myrp = (System.Net.HttpWebResponse)Myrq.GetResponse(); //從WEB請求得到WEB響應
long totalBytes = myrp.ContentLength; //從WEB響應得到總位元組數
//更新進度
if (updateProgress != null)
{
updateProgress((int)totalBytes,0);//從總位元組數得到進度條的最大值
}
st = myrp.GetResponseStream(); //從WEB請求建立流(讀)
so = new System.IO.FileStream(Filename, System.IO.FileMode.Create); //建立檔案流(寫)
long totalDownloadedByte = 0; //下載檔案大小
byte[] by = new byte[1024];
int osize = st.Read(by, 0, (int)by.Length); //讀流
while (osize > 0)
{
totalDownloadedByte = osize + totalDownloadedByte; //更新檔案大小
Application.DoEvents();
so.Write(by, 0, osize); //寫流
//更新進度
if (updateProgress != null)
{
updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新進度條
}
osize = st.Read(by, 0, (int)by.Length); //讀流
}
//更新進度
if (updateProgress != null)
{
updateProgress((int)totalBytes, (int)totalBytes);
}
flag= true;
}
catch(Exception )
{
flag = false;
throw;
//return false;
}
finally
{
if (Myrq != null)
{
Myrq.Abort();//銷燬關閉連線
}
if (myrp != null)
{
myrp.Close();//銷燬關閉響應
}
if (so != null)
{
so.Close(); //關閉流
}
if (st != null)
{
st.Close(); //關閉流
}
}
return flag;
}</span>
呼叫方式一:
<span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下載檔案的網址", "檔名", new Action<int, int>(
(int Maximum, int Value)
=>
{
//更新進度條
progressBar1.Maximum = Maximum;
progressBar1.Value = Value;
})
))
{
//下載檔案後的處理
}</span>
不傳引數的action寫法:
((Form)form).BeginInvoke(new Action(() =>
{
//處理
})
呼叫方式二:
<span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下載檔案的網址", "檔名", UpdateProgressBar))
{
//下載檔案後的處理
}
////更新進度條
private void UpdateProgressBar(int Maximum, int Value)
{
progressBar1.Maximum = Maximum;
progressBar1.Value = Value;
}</span>
小注:呼叫程式碼中的progressBar1是微軟的進度條控制元件
URL示例:http://111.111.111.211/TestService/download/V1.00/1.00_0012.zip
如果要充Windows Server上下載檔案的話,需要在iis中配置,該目錄為可以訪問的,具體配置步驟如下:
1、找到需要下載檔案對應的目錄:
2、在右側找到《目錄瀏覽》:
3、在《目錄瀏覽》上右鍵,點選:開啟該功能
4、可以看到下圖,啟用即可:
相關文章
- 【新特性速遞】進度條,進度條,進度條
- Python之程式碼進度條Python
- bat檔案進度條程式碼BAT
- HttpWebChilent上傳與下載進度條HTTPWeb
- Python展示檔案下載進度條Python
- 實現一個協程帶進度條下載器
- c# 控制檯console進度條C#
- CSS3進度條效果程式碼CSSS3
- Qt 進度條QT
- HTML <progress> 進度條HTML
- wkwebView 新增 進度條WebView
- 學習進度條
- 簡單進度條
- Python進度條技巧Python
- canvas 畫進度條Canvas
- Linux 進度條(非100%)列出unzip進度Linux
- Android花樣loading進度條(三)-配文字環形進度條Android
- OSS實現檔案下載進度條顯示
- pyqt5的下載進度條 實現模板QT
- 製作遊戲載入進度條遊戲
- 帶進度條複製檔案代替copyfile
- ProgressBar進度條顏色
- icp配準進度條
- Excel實現完成進度的進度條結果Excel
- 簡單實現帶節點的進度條
- 【CLI】使用 Curl 下載檔案實時進度條顯示
- canvas環形進度條效果Canvas
- 數字進度條元件NumberProgressBar元件
- 橡皮筋進度條ElasticProgressBarAST
- golang 進度條功能實現Golang
- psplash進度條旋轉成功
- Flutter 波浪圓形進度條Flutter
- LVGL高效顯示進度條
- canvas百分比環形進度條程式碼Canvas
- jQuery環形旋轉載入進度條效果jQuery
- echarts 繪製圓形進度條帶漸變色Echarts
- 下載速度居然可以這麼快,進度條就靠你拯救了!
- 直播平臺搭建原始碼,canvas 畫一條波浪線 進度條原始碼Canvas
- 直播平臺搭建原始碼,uniapp progress進度條原始碼APP