Я использую этот код для загрузки через FTP
try
{
//const string url = ficFTP;
string url = ficFTP;
NetworkCredential credentials = new NetworkCredential(user, pass);
// Query size of the file to be downloaded
WebRequest sizeRequest = WebRequest.Create(url);
sizeRequest.Credentials = credentials;
sizeRequest.Method = WebRequestMethods.Ftp.GetFileSize;
long size = (long)sizeRequest.GetResponse().ContentLength;
long sizeKb = size / 1024;
progressBar1.Invoke(
(MethodInvoker)(() => progressBar1.Maximum = Convert.ToInt32(sizeKb)));
// Download the file
WebRequest request = WebRequest.Create(url);
request.Credentials = credentials;
request.Method = WebRequestMethods.Ftp.DownloadFile;
using (Stream ftpStream = request.GetResponse().GetResponseStream())
using (Stream fileStream = File.Create(dirLocal))
{
byte[] buffer = new byte[10240];
int read;
while ((read = ftpStream.Read(buffer, 0, buffer.Length)) > 0)
{
fileStream.Write(buffer, 0, read);
long position = (long)fileStream.Position;
long positionKb = position / 1024;
progressBar1.Invoke(
(MethodInvoker)(() => progressBar1.Value = Convert.ToInt32(positionKb)));
}
}
lblDescarga.Text = "¡Descargado!";
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Я загружаю файл, который весит 4 ГБ, проблема в том, что когда программное обеспечение загрузило 3,22 ГБ, оно выдает эту ошибку
соединение прервано: неожиданный прием
Может ли быть какая-то проблема с открытым временем соединения с сервером? Есть ли решение этой проблемы? Я расследовал, но не могу найти решение.
Я надеюсь, что вы можете дать мне идею. Спасибо.