Sharma Ravi Ответов: 1

Загрузка файла с ftp сервера удаляет новую строку и показывает всю строку в одной строке


Привет,

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

Я сделал следующий код. Пожалуйста, предложите.
public void DownloadFTPFile()
        {

            string host = ConfigurationManager.AppSettings.Get("ftphost");
            string username = ConfigurationManager.AppSettings.Get("ftpusername");
            string password = ConfigurationManager.AppSettings.Get("ftppassword");

            string fileName = "Receipt.txt";
            try
            {
                string fullPath = host + "/FROM-SAP-2-MOB/" + fileName;
                //Create FTP Request.
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(fullPath);
                request.Method = WebRequestMethods.Ftp.DownloadFile;
                //Enter FTP Server credentials.
                request.Credentials = new NetworkCredential(username, password);
                request.UsePassive = true;
                request.UseBinary = true;
                request.EnableSsl = false;
                //Fetch the Response and read it into a MemoryStream object.
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (Stream fileStream = new FileStream(Application.StartupPath.ToString() + "\\IMPORT_CSV\\" + fileName, FileMode.CreateNew))
                    {
                        responseStream.CopyTo(fileStream);
                    }
                }
            }
            catch (WebException ex)
            {
                throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
            }
        }
Спасибо,
Рави Шарма

Что я уже пробовал:

Я попытался в google решить эту проблему, но не нашел ответа.

F-ES Sitecore

Откуда вы знаете, что разрывы строк есть в файле на ftp - сервере? И ссылка, которую опубликовал Ричард, и вот этот находятся на первой странице поиска google для "c# ftp удаляет разрывы строк".

Если это файл, который вы загрузили сами, то, возможно, он был загружен в режиме ascii, но вы загружаете его в двоичном формате. Или если файл был сгенерирован ОС, отличной от Windows, то разрывы строк, которые вы ищете, могут отсутствовать в файле, поэтому двоичная загрузка не будет работать.

1 Ответов

Рейтинг:
12

Richard Deeming

Цитата:
request.UseBinary = true;

Двоичный режим передает байты файла дословно. Исходный файл почти наверняка был создан в системе Linux или Mac, которая использует другой символ разрыва строки, чем Windows.

Набор UseBinary к false если вы передаете текстовые файлы. Или, как вариант, читайте файлы с помощью текстового редактора, который поддерживает разрывы строк с разных платформ- например: Блокнот++[^].

FTP в двоичном и типы передачи ASCII и в случае поврежденных файлов[^]


MadMyche

MS объявила, что следующая версия блокнота также будет поддерживать

Sharma Ravi

Спасибо, Ричард. Это сработало для меня.