Загрузка нескольких файлов в .net через FTP

StackOverflow https://stackoverflow.com/questions/4726380

  •  12-10-2019
  •  | 
  •  

Вопрос

Я думаю об использовании следующего кода, но я хочу перенести сотни файлов, и он не выглядит жизнеспособным для подключения, а затем отключать при каждом передаче файлов.

request = (FtpWebRequest) FtpWebRequest.Create(FtpAddress + file);

request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(User, Pass);

request.UsePassive = IsPassive;
request.UseBinary = true;
request.KeepAlive = false;

FileStream fs = File.OpenRead("");
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();

Какие варианты у меня есть для загрузки всех этих файлов с помощью одного соединения?

Это было полезно?

Решение

Я не подтвердил это правдой, но в моем быстром 30 -секунде поисках, если вы установите

request.KeepAlive = true;

По каждому запросу, которое вы создаете, кроме последнего, по -видимому, только первый FTPWebRequest делает полное подключение к логину.

Затем, когда вы создаете последний ftpwebrequest, установите

request.KeepAlive = false;

И это закроет соединение, когда закончится. Вы можете проверить это, если у вас есть доступ к журналам FTP -сервера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top