关键词搜索

源码搜索 ×
×

C# 下载带进度条代码(普通进度条)

发布2015-05-11浏览7099次

详情内容

  1. <span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> /// <summary>
  2. /// 下载带进度条代码(普通进度条)
  3. /// </summary>
  4. /// <param name="URL">网址</param>
  5. /// <param name="Filename">下载后文件名为</param>
  6. /// <param name="Prog">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>
  7. /// <returns>True/False是否下载成功</returns>
  8. public static bool DownLoadFile(string URL, string Filename, Action<int, int> updateProgress = null)
  9. {
  10. Stream st = null;
  11. Stream so = null;
  12. System.Net.HttpWebRequest Myrq =null;
  13. System.Net.HttpWebResponse myrp = null;
  14. bool flag = false;
  15. try
  16. {
  17. Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //从URL地址得到一个WEB请求
  18. myrp = (System.Net.HttpWebResponse)Myrq.GetResponse(); //从WEB请求得到WEB响应
  19. long totalBytes = myrp.ContentLength; //从WEB响应得到总字节数
  20. //更新进度
  21. if (updateProgress != null)
  22. {
  23. updateProgress((int)totalBytes,0);//从总字节数得到进度条的最大值
  24. }
  25. st = myrp.GetResponseStream(); //从WEB请求创建流(读)
  26. so = new System.IO.FileStream(Filename, System.IO.FileMode.Create); //创建文件流(写)
  27. long totalDownloadedByte = 0; //下载文件大小
  28. byte[] by = new byte[1024];
  29. int osize = st.Read(by, 0, (int)by.Length); //读流
  30. while (osize > 0)
  31. {
  32. totalDownloadedByte = osize + totalDownloadedByte; //更新文件大小
  33. Application.DoEvents();
  34. so.Write(by, 0, osize); //写流
  35. //更新进度
  36. if (updateProgress != null)
  37. {
  38. updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新进度条
  39. }
  40. osize = st.Read(by, 0, (int)by.Length); //读流
  41. }
  42. //更新进度
  43. if (updateProgress != null)
  44. {
  45. updateProgress((int)totalBytes, (int)totalBytes);
  46. }
  47. flag= true;
  48. }
  49. catch(Exception )
  50. {
  51. flag = false;
  52. throw;
  53. //return false;
  54. }
  55. finally
  56. {
  57. if (Myrq != null)
  58. {
  59. Myrq.Abort();//销毁关闭连接
  60. }
  61. if (myrp != null)
  62. {
  63. myrp.Close();//销毁关闭响应
  64. }
  65. if (so != null)
  66. {
  67. so.Close(); //关闭流
  68. }
  69. if (st != null)
  70. {
  71. st.Close(); //关闭流
  72. }
  73. }
  74. return flag;
  75. }</span>

 

调用方式一:

  1. <span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", new Action<int, int>(
  2. (int Maximum, int Value)
  3. =>
  4. {
  5. //更新进度条
  6. progressBar1.Maximum = Maximum;
  7. progressBar1.Value = Value;
  8. })
  9. ))
  10. {
  11. //下载文件后的处理
  12. }</span>

不传参数的action写法:

  1. ((Form)form).BeginInvoke(new Action(() =>
  2. {
  3. //处理
  4. })

调用方式二:

  1. <span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", UpdateProgressBar))
  2. {
  3. //下载文件后的处理
  4. }
  5. 更新进度条
  6. private void UpdateProgressBar(int Maximum, int Value)
  7. {
  8. progressBar1.Maximum = Maximum;
  9. progressBar1.Value = Value;
  10. }</span>

 
小注:调用代码中的progressBar1是微软的进度条控件

URL示例:http://111.111.111.211/TestService/download/V1.00/1.00_0012.zip


如果要充Windows Server上下载文件的话,需要在iis中配置,该目录为可以访问的,具体配置步骤如下:

1、找到需要下载文件对应的目录:


2、在右侧找到《目录浏览》:


3、在《目录浏览》上右键,点击:打开该功能


4、可以看到下图,启用即可:



相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载