首页 > 编程 > C# > 正文

C#文件断点续传实现方法

2019-10-29 21:39:04
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#文件断点续传实现方法,涉及C#文件传输的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#文件断点续传实现方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. /// <summary> 
  2. /// 下载局域网文件 
  3. /// </summary> 
  4. /// <param name="path">文件路径,如://192.168.10.1/app/app/123.zip</param> 
  5. /// <param name="username">计算机名称</param> 
  6. /// <param name="password">计算机密码</param> 
  7. static void RequestWindowsShared(string path, string username, string password) 
  8. //文件总大小 
  9. int allBytesCount = 0; 
  10. //每次传输大小 
  11. int byteTemp = 1024; 
  12. //当前位置 
  13. int bytePosition = 0; 
  14. //剩下大小 
  15. int remain = 0; 
  16. System.Net.FileWebRequest request = null
  17. System.Net.FileWebResponse response = null
  18. System.IO.Stream stream = null
  19. System.IO.FileStream fileStream = null
  20. try 
  21. Uri uri = new Uri(path); 
  22. request = (System.Net.FileWebRequest)System.Net.FileWebRequest.Create(uri); 
  23. System.Net.ICredentials ic = new System.Net.NetworkCredential(username, password); 
  24. request.Credentials = ic; 
  25. response = (System.Net.FileWebResponse)request.GetResponse(); 
  26. stream = response.GetResponseStream(); 
  27. byte[] bytes = new byte[stream.Length]; 
  28. stream.Read(bytes, 0, bytes.Length); 
  29. string filename = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "//" + System.IO.Path.GetFileName(path); 
  30. fileStream = new FileStream(filename, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite); 
  31. allBytesCount = bytes.Length; 
  32. remain = allBytesCount; 
  33. while (remain > 0) 
  34. fileStream.Write(bytes, bytePosition, byteTemp); 
  35. remain = remain - byteTemp; 
  36. bytePosition = bytePosition + byteTemp; 
  37. fileStream.Flush(); 
  38. if (remain < byteTemp) 
  39. byteTemp = remain; 
  40. Console.WriteLine("下载成功!"); 
  41. catch (Exception ex) 
  42. Console.WriteLine(ex.Message); 
  43. finally 
  44. fileStream.Close(); 
  45. fileStream.Dispose(); 
  46. stream.Close(); 
  47. stream.Dispose(); 
  48. /// <summary> 
  49. /// 上传文件 
  50. /// </summary> 
  51. /// <param name="path">共享目录路径+文件名称</param> 
  52. /// <param name="local">本地路径</param> 
  53. /// <param name="username">用户名</param> 
  54. /// <param name="password">密码</param> 
  55. static void ResponseWindowsShared(string path, string local, string username, string password) 
  56. //文件总大小 
  57. int allBytesCount = 0; 
  58. //每次传输大小 
  59. int byteTemp = 1024; 
  60. //当前位置 
  61. int bytePosition = 0; 
  62. //剩下大小 
  63. int remain = 0; 
  64. System.Net.FileWebRequest request = null
  65. System.IO.Stream stream = null
  66. try 
  67. //时间戳  
  68. string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x"); 
  69. Uri uri = new Uri(path); 
  70. byte[] bytes = System.IO.File.ReadAllBytes(local); 
  71. request = (System.Net.FileWebRequest)System.Net.FileWebRequest.Create(uri); 
  72. request.Method = "POST"
  73. //设置获得响应的超时时间(300秒)  
  74. request.Timeout = 300000; 
  75. request.ContentType = "multipart/form-data; boundary=" + strBoundary; 
  76. request.ContentLength = bytes.Length; 
  77. System.Net.ICredentials ic = new System.Net.NetworkCredential(username, password); 
  78. request.Credentials = ic; 
  79. stream = request.GetRequestStream(); 
  80. allBytesCount = bytes.Length; 
  81. remain = allBytesCount; 
  82. while (remain > 0) 
  83. stream.Write(bytes, bytePosition, byteTemp); 
  84. remain = remain - byteTemp; 
  85. bytePosition = bytePosition + byteTemp; 
  86. stream.Flush(); 
  87. if (remain < byteTemp) 
  88. byteTemp = remain; 
  89. Console.WriteLine("上传成功!"); 
  90. catch (Exception ex) 
  91. Console.WriteLine(ex.Message); 
  92. finally 
  93. stream.Close(); 
  94. stream.Dispose(); 

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表