c# - 如何在互联网中断后继续或恢复 FTP 上传

标签 c# .net file-upload ftp ftpwebrequest

我正在使用以下代码 (C# .NET 3.5) 上传文件:

FtpWebRequest request =
    (FtpWebRequest)WebRequest.Create("ftp://someweb.mn/altanzulpharm/file12.zip");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.KeepAlive = true;
request.UseBinary = true;
request.Credentials = new NetworkCredential(username, password);

FileStream fs = File.OpenRead(FilePath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();

Stream ftpstream = request.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();

但是当互联网中断时上传中断。中断发生的时间非常短,几乎是一毫秒。但是上传永远中断!

是否可以在网络中断后继续或恢复上传?

最佳答案

我不相信 FtpWebRequest 支持在失去连接后重新连接。您可以从给定位置恢复上传如果服务器支持(这种支持不是必需的,而且重试下载可能不太常见)。

您需要设置 FtpWebRequet.ContentOffset上传。文章中的部分示例:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.ContentOffset = offset;

FTP 协议(protocol)本身恢复的内部细节 - RFC959: 3.5 - Error recovery and restart .显示下载重试代码的问题 - Downloading from FTP with c#, can't retry when fail

关于c# - 如何在互联网中断后继续或恢复 FTP 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779788/

相关文章:

.net - .NET 中的 Try-Catch-Continue

PHP 中途停止工作,没有错误

php - set_time_limit(),Die()这个函数可以用来取消php中的文件上传吗

c# - UWP - 无法读取串行端口 COM

c# - 从ViewModel阻止DatePicker更改

.net - Windows窗体错误解析VB.NET

c# - 用于将 3 个主节点连接到 MySQL 的 ConnectionString

c# - 在gridview中上传文件

C# 无法在自定义验证属性中找到其他属性

c# - 如何使用任何脚本判断给定的 URL 是否会重定向?