坐席客户端5.0

DownloadHandler.cs 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using CefSharp;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Forms;
  8. namespace Lecall
  9. {
  10. internal class DownloadHandler : IDownloadHandler
  11. {
  12. //public event EventHandler<DownloadItem> OnBeforeDownloadFired;
  13. //public event EventHandler<DownloadItem> OnDownloadUpdatedFired;
  14. public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
  15. {
  16. //var handler = OnBeforeDownloadFired;
  17. //if (handler != null)
  18. //{
  19. // handler(this, downloadItem);
  20. //}
  21. if (!callback.IsDisposed)
  22. {
  23. using (callback)
  24. {
  25. //callback.Continue(downloadItem.Url+ downloadItem.SuggestedFileName, true);
  26. //callback.Continue(downloadItem.SuggestedFileName, true );
  27. FrmDownLoad myfrm = new FrmDownLoad();
  28. myfrm.originalurl = downloadItem.Url;
  29. myfrm.filename = downloadItem.SuggestedFileName;
  30. myfrm.Show();
  31. //DownloadFile(downloadItem.OriginalUrl, @"C:\123.rar");
  32. }
  33. }
  34. }
  35. public bool OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
  36. {
  37. return false;
  38. //var handler = OnDownloadUpdatedFired;
  39. //if (handler != null)
  40. //{
  41. // handler(this, downloadItem);
  42. //}
  43. }
  44. public void OnDownloadUpdated(IWebBrowser browserControl, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
  45. {
  46. //var handler = OnDownloadUpdatedFired;
  47. //if (handler != null)
  48. //{
  49. // handler(this, downloadItem);
  50. //}
  51. }
  52. public void OnBeforeDownload(IWebBrowser browserControl, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
  53. {
  54. //var handler = OnDownloadUpdatedFired;
  55. //if (handler != null)
  56. //{
  57. // handler(this, downloadItem);
  58. //}
  59. if (!callback.IsDisposed)
  60. {
  61. using (callback)
  62. {
  63. //callback.Continue(downloadItem.Url+ downloadItem.SuggestedFileName, true);
  64. //callback.Continue(downloadItem.SuggestedFileName, true );
  65. FrmDownLoad myfrm = new FrmDownLoad();
  66. myfrm.originalurl = downloadItem.Url;
  67. myfrm.filename = downloadItem.SuggestedFileName;
  68. myfrm.Show();
  69. //DownloadFile(downloadItem.OriginalUrl, @"C:\123.rar");
  70. }
  71. }
  72. }
  73. /// <summary>
  74. /// c#,.net 下载文件
  75. /// </summary>
  76. /// <param name="URL">下载文件地址</param>
  77. ///
  78. /// <param name="Filename">下载后的存放地址</param>
  79. /// <param name="Prog">用于显示的进度条</param>
  80. ///
  81. public void DownloadFile(string URL, string filename)
  82. {
  83. float percent = 0;
  84. try
  85. {
  86. System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
  87. System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
  88. long totalBytes = myrp.ContentLength;
  89. #region 保存文件对话框
  90. SaveFileDialog saveFileDialog1 = new SaveFileDialog();
  91. //设置文件类型
  92. saveFileDialog1.Filter = " xls files(*.xls)|*.txt|All files(*.*)|*.*";
  93. //设置文件名称:
  94. saveFileDialog1.FileName = filename;
  95. //设置默认文件类型显示顺序
  96. saveFileDialog1.FilterIndex = 2;
  97. //保存对话框是否记忆上次打开的目录
  98. saveFileDialog1.RestoreDirectory = true;
  99. //点了保存按钮进入
  100. if (saveFileDialog1.ShowDialog() == DialogResult.OK)
  101. {
  102. }
  103. else
  104. { return; }
  105. #endregion
  106. System.IO.Stream st = myrp.GetResponseStream();
  107. System.IO.Stream so = new System.IO.FileStream(filename, System.IO.FileMode.Create);
  108. long totalDownloadedByte = 0;
  109. byte[] by = new byte[1024];
  110. int osize = st.Read(by, 0, (int)by.Length);
  111. while (osize > 0)
  112. {
  113. totalDownloadedByte = osize + totalDownloadedByte;
  114. System.Windows.Forms.Application.DoEvents();
  115. so.Write(by, 0, osize);
  116. osize = st.Read(by, 0, (int)by.Length);
  117. percent = (float)totalDownloadedByte / (float)totalBytes * 100;
  118. System.Windows.Forms.Application.DoEvents(); //必须加注这句代码,否则label1将因为循环执行太快而来不及显示信息
  119. }
  120. so.Close();
  121. st.Close();
  122. }
  123. catch (System.Exception)
  124. {
  125. throw;
  126. }
  127. }
  128. }
  129. }