Как загрузить несколько файлов в одном FtpWebRequest - PullRequest
0 голосов
/ 04 ноября 2019

Я могу успешно загрузить файлы с указанным ниже кодом, используя FtpWebRequest.

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

Если это правда. Как может соединение оставаться открытым все время и, что важно, как можно проверить, открыты ли соединения, прежде чем выполнять запрос, если нужно снова ввести имя пользователя и пароль, чтобы открыть новый запрос?

Я знаюнижняя строка как-то связана с этим, но я не знаю, как правильно настроить приведенный выше сценарий:

request.KeepAlive = true;

Полный код:

        void uploadFilesToFTP()
        {
            List<String> fileLIST = new List<String>();
            fileLIST.Add("C:/ESD/test0.txt");
            fileLIST.Add("C:/ESD/test1.txt");
            fileLIST.Add("C:/ESD/test2.txt");
            for (int i = 0; i < fileLIST.Count; i++)
            {
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://someurl.net/folder1/test" + i.ToString() + ".txt");
                request.Method = WebRequestMethods.Ftp.UploadFile;
                request.EnableSsl = false;
                request.Credentials = new NetworkCredential("username", "password");
                request.KeepAlive = true;

                //Read the file's contents into a byte array.
                if (File.Exists(fileLIST[i]))
                {
                    //Write the bytes into the request stream.
                    byte[] bytes = System.IO.File.ReadAllBytes(fileLIST[i]);
                    request.ContentLength = bytes.Length;
                    using (Stream request_stream = request.GetRequestStream())
                    {
                        request_stream.Write(bytes, 0, bytes.Length);
                        request_stream.Close();
                    }
                }
            }
        }
...