如何在中断互联网后继续或恢复FTP上传
我使用下面的代码(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();
但是当互联网中断时,上传会中断。 中断发生的时间非常短,几乎是一毫秒。 但永远上传rest!
互联网中断后是否可以继续或继续上传?
我不相信FtpWebRequest在失去连接后支持重新连接。 如果服务器支持,您可以从给定位置恢复上载(不需要此支持,并且可能不太常见,重试下载)。
您需要设置FtpWebRequet.ContentOffset上传。 文章中的部分样本:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); request.ContentOffset = offset;
FTP协议本身还原的内部细节 – RFC959:3.5 – 错误恢复和重启 。 显示下载重试代码的问题 – 使用c#从FTP下载,失败时无法重试
在使用FtpWebRequest
中断连接后恢复传输的唯一方法是重新连接并开始写入文件的末尾。
为此使用FtpWebRequest.ContentOffset
。
或者使用可以自动恢复传输的FTP库。
例如WinSCP .NET程序集 。 有了它,可恢复上传就像以下一样简单:
# Load WinSCP .NET assembly Add-Type -Path "WinSCPnet.dll" # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ Protocol = [WinSCP.Protocol]::Ftp HostName = "ftp.example.com" UserName = "user" Password = "mypassword" } $session = New-Object WinSCP.Session # Connect $session.Open($sessionOptions) # Resumable upload $transferResult = $session.PutFiles("C:pathfile.zip", "/home/user/file.zip").Check()
(我是WinSCP的作者)
上述就是C#学习教程:如何在中断互联网后继续或恢复FTP上传分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1002108.html