Загрузка нескольких файлов в .NET через FTP - PullRequest
1 голос
/ 18 января 2011

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

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();

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

1 Ответ

3 голосов
/ 18 января 2011

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

request.KeepAlive = true;

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

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

request.KeepAlive = false;

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

...