欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 實現斷點續傳功能

admin
2024年3月13日 0:29 本文熱度 634

1.    using System;

2.    using System.Collections.Generic;

3.    using System.IO;

4.    using System.Linq;

5.    using System.Net;

6.    using System.Text;

7.    using System.Text.RegularExpressions;

8.    using System.Threading.Tasks;

9.     

10. namespace Utils

11. {

12. public class HttpUtil

13. {

14. public static bool isUrl(string url)

15. {

16. // 正則表達式

17. string pattern = @"^(https?://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?";

18. // 創建正則表達式對象

19. Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);

20. // 判斷字符串是否匹配正則表達式

21. return regex.IsMatch(url);

22. }

23.  

24. public static string DoGet(string url)

25. {

26. string result = string.Empty;

27. try

28. {

29. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);

30. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

31. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);

32. result = reader.ReadToEnd();//利用StreamReader就可以從響應內容從頭讀到尾

33. reader.Close();

34. myResponse.Close();

35. }

36. catch

37. {

38. }

39. return result;

40. }

41.  

42. /// <summary>

43. /// 獲取一個網絡文件的大小

44. /// </summary>

45. /// <param name="url"></param>

46. /// <returns></returns>

47. public static async Task<long> GetFileSize(string url)

48. {

49. long fileSize = 0;

50. await Task.Run(() =>

51. {

52. try

53. {

54. WebRequest request = WebRequest.Create(url);

55. request.Method = "HEAD";

56. using (WebResponse response = request.GetResponse())

57. {

58. if (long.TryParse(response.Headers.Get("Content-Length"), out fileSize))

59. {

60. return fileSize;

61. }

62. }

63. }

64. catch (Exception)

65. {

66. }

67. return fileSize;

68. });

69. return fileSize;

70. }

71.  

72. /// <summary>

73. /// 斷點續傳功能

74. /// </summary>

75. /// <param name="fileUrl">下載鏈接</param>

76. /// <param name="saveFilePath">文件保存路徑</param>

77. /// <param name="progress">進度百分比</param>

78. /// <returns></returns>

79. public static async Task<double> DownloadFileWithResume(string fileUrl, string saveFilePath, Action<double> progress = null)

80. {

81. long fileSize = 0;

82. if (File.Exists(saveFilePath))

83. {

84. var fileInfo = new FileInfo(saveFilePath);

85. fileSize = fileInfo.Length;

86. }

87.  

88. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileUrl);

89. request.Method = "GET";

90.  

91. if (fileSize > 0)

92. {

93. //對比已存在文件與網絡文件實際大小,如果相等,則為已下載完成的

94. long realitySize = await GetFileSize(fileUrl);

95. if (realitySize == fileSize)

96. {

97. progress?.Invoke(100);

98. return 100;

99. }

100.           request.AddRange(fileSize);

101.           }

102.               

103.           HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();

104.           long contentLength = response.ContentLength + fileSize;

105.           double percentComplete = 0;

106.           using (FileStream fileStream = new FileStream(saveFilePath, FileMode.Append))

107.           {

108.           byte[] buffer = new byte[4096];

109.           using (Stream responseStream = response.GetResponseStream())

110.           {

111.           int bytesRead = 0;

112.           long bytesReceived = fileSize;

113.           while ((bytesRead = await responseStream.ReadAsync(buffer, 0, buffer.Length)) > 0)

114.           {

115.           await fileStream.WriteAsync(buffer, 0, bytesRead);

116.           bytesReceived += bytesRead;

117.           percentComplete = (double)bytesReceived / (double)contentLength;

118.           progress?.Invoke(percentComplete);

119.           //Console.WriteLine("Download progress: {0:P}", percentComplete);

120.           }

121.           }

122.           }

123.           return percentComplete;

124.           }

125.               

126.           }

127.           }


該文章在 2024/3/13 0:31:15 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved