\ DriveHQ Customer Support Forum \
Прочитать/Ответить : 103681/7
  • DriveHQSupport_
  • (676посты)
Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

Многие пользователи спрашивали, как подключиться к FTP-серверу DriveHQ в своих программных проектах. В этом сообщении мы хотели бы сначала предоставить общую информацию о FTP, а затем привести исходный код на C#.

DriveHQ предлагает услуги хостинга FTP-серверов. Мы поддерживаем стандартные протоколы FTP и FTPS. Одно из главных преимуществ нашего FTP-сервиса: он легко интегрируется с нашими многочисленными облачными IT-сервисами. Пользователи могут получать доступ к своим FTP-файлам через веб-браузер. Подключенный сетевой диск (WebDAV) или клиентское программное обеспечение DriveHQ FileManager. Они также могут использовать наш веб-инструмент для управления группами пользователей, чтобы создавать и управлять FTP-пользователями (дочерними пользователями).

Обычный протокол FTP считается небезопасным, поскольку передает данные без шифрования. Для надежной защиты SSL можно использовать FTPS (FTP через SSL/TLS). Существует два способа обеспечения безопасности SSL:

Скрытый: FTP-клиент напрямую подключается к специальному номеру порта FTPS (по умолчанию 990);

Явный (FTPES): FTP-клиент подключается к стандартному FTP-порту номер 21, а затем отправляет команду STARTTLS для повышения уровня безопасности.

FTP-сервер DriveHQ поддерживает как FTPS, так и FTPES. Большинство FTP-клиентов поддерживают FTPS и FTPES, например, FileZilla, CuteFTP, WsFTP, SmartFTP, WinSCP и Fetch и др.

Существует ещё один защищённый протокол передачи файлов, называемый SFTP, который часто путают с «Secure FTP»; на самом деле он означает «SSH File Transfer Protocol» — совершенно другой протокол передачи файлов. С точки зрения безопасности SSL/TLS и SSH практически идентичны. Очевидно, что SSL/TLS более популярен, чем SSH. FTP-сервер DriveHQ не поддерживает SFTP, поскольку мы не видим в этом острой необходимости.

Активный и пассивный режимы FTP:

FTP-соединение может включать два TCP-соединения (канала): канал команд и канал данных. Канал команд используется для отправки FTP-команд; канал данных — для передачи больших объемов данных. В активном режиме FTP FTP-сервер должен установить обратное соединение с FTP-клиентом для передачи данных. Этот режим часто считается небезопасным и блокируется многими брандмауэрами/маршрутизаторами. В пассивном режиме FTP FTP-клиент должен подключиться к FTP-серверу через другой номер порта. Этот режим считается безопасным и редко блокируется. FTP-сервер DriveHQ поддерживает как активный, так и пассивный FTP. Однако, если ваш маршрутизатор/брандмауэр или программное обеспечение безопасности блокирует активный FTP, он работать не будет. Интересно отметить, что большинство новых маршрутизаторов поддерживают активный FTP.

Обратите внимание: FTP-клиент командной строки от Microsoft не поддерживает пассивный FTP. Практически все остальные FTP-клиенты поддерживают как активный, так и пассивный FTP.

FTP и ProFTP

У DriveHQ есть два FTP-сервера: один — ftp.drivehq.com, доступный всем пользователям; другой — proftp.drivehq.com, доступный только платным подписчикам (включая субпользователей платной групповой учетной записи). Поскольку proftp.drivehq.com доступен только платным подписчикам, он не поддерживает анонимный FTP. Для получения дополнительной информации о нашей услуге хостинга FTP-серверов, пожалуйста, посетите [ссылка]:

http://www.drivehq.com/servicemanual.aspx#_Toc265186728

 

Пример исходного кода FTP-клиента

Приведенный ниже исходный код на C# предоставляется как есть, без какой-либо поддержки. Вы можете свободно использовать его в своем программном обеспечении или распространять его. Пример кода показывает, как подключиться к нашему FTP-серверу и выполнять команды FTP, такие как LIST, GET и PUT; вы также можете увидеть, как настроить его на использование пассивного FTP и SSL.


используя систему;
using System.Collections.Generic;
с использованием System.Linq;
using System.Text;
с использованием System.Threading.Tasks;
с использованием System.Net;
с использованием System.IO;
с использованием System.Security.Cryptography.X509Certificates;

/// <краткое содержание>
/// Авторские права (c) 2003-2016, Drive Headquarters, Inc. 
/// 
/// В приведенном примере кода FTP-клиента показано, как подключиться к FTP-серверу DriveHQ с помощью C#.
/// Вы можете использовать этот код или распространять его бесплатно. Код предоставляется «как есть», без каких-либо условий 
/// Никакой поддержки или гарантии. DriveHQ не несет никакой ответственности за использование кода.
///
пространство имен FTPClientSample
{
    класс Программа
    {
        static string ftpServer = "ftp.drivehq.com"; // Вы также можете использовать proftp.drivehq.com, если у вас платный аккаунт.
        static string username = "YOUR_USERNAME"; // Ваше имя пользователя DriveHQ
        static string password = "YOUR_PASSWORD"; // Ваш пароль от DriveHQ
        static void Main(string[] args)
        {
            // Вывести список папок на FTP-сервере
            //Список("/"); 

            // Скачать файл с FTP-сервера
            //DownloadFile("ServerFileName.jpg", @"c:\temp\ClientFileName.jpg");

            // Загрузите файл на FTP-сервер
            UploadFile(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        /// <краткое содержание>
        /// Загрузите файл на FTP-сервер.
        ///
        /// путь к локальному файлу
        /// путь на FTP-сервере, например, /temp/filename
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            if (String.IsNullOrWhiteSpace(srcFilePath))
                throw new ArgumentNullException("Source FilePath.");

            if (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(destFilePath);

            // serverUri должен начинаться со схемы ftp://.
            если (serverUri.Scheme != Uri.UriSchemeFtp)
                вернуть false;

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.UploadFile);

            // чтение содержимого файла в массив байтов
            FileStream sourceStream = new FileStream(srcFilePath, FileMode.Open, FileAccess.Read);
            byte[] fileContent = new byte[sourceStream.Length];
            sourceStream.Read(fileContent, 0, fileContent.Length);
            sourceStream.Close();

            // отправить содержимое файла на FTP-сервер
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("Статус ответа: {0} - {1}", response.StatusCode, response.StatusDescription);

            вернуть true;
        }

        /// <краткое содержание>
        /// Загрузите файл srcFilePath с FTP-сервера в папку destFilePath. Если значение равно null, сохраните файл в текущую папку.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            if (String.IsNullOrWhiteSpace(srcFilePath))
                throw new ArgumentNullException("Source FilePath.");

            if (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(srcFilePath);

            //// serverUri должен начинаться со схемы ftp://.
            если (serverUri.Scheme != Uri.UriSchemeFtp)
                вернуть false;

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.DownloadFile);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            FileStream fileStream = new FileStream(destFilePath, FileMode.OpenOrCreate, FileAccess.Write);

            byte[] buffer = new byte[32 * 1024];

            пока(true) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                если (bytesRead == 0)
                    перерыв;

                fileStream.Write(buffer, 0, bytesRead);
            }
            fileStream.Close();

            Console.WriteLine("Статус ответа: {0} - {1}", response.StatusCode, response.StatusDescription);

            вернуть true;
        }

        /// <краткое содержание>
        /// Отобразить содержимое папки FTP
        ///
        ///
        ///
        public static string List(string path)
        {

            Uri serverUri = GetUri(path);

            //// serverUri должен начинаться со схемы ftp://.
            если (serverUri.Scheme != Uri.UriSchemeFtp)
                возвращаться ""; 

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.ListDirectory);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string result = sr.ReadToEnd();
            Console.WriteLine("Статус ответа: {0} - {1}", response.StatusCode, response.StatusDescription + "\r\n" + result);

            вернуть результат;
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
            request.EnableSsl = true;
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;
            request.Credentials = new NetworkCredential(username, password);
            request.Method = method;

            запрос на возврат;
        }

        private static Uri GetUri(string remoteFilePath)
        {
            Uri ftpServerUri = new Uri("ftp://" + ftpServer);
            return new Uri(ftpServerUri, remoteFilePath);
        }

    }
}
 

10.05.2016 19:01:04

  • ajayreigns
  • (1посты)
Предмет: Мне нужен код на VB.NET для подключения к учетной записи PRO Drivehq
Мне нужен код на VB.NET для подключения к учетной записи PRO Drivehq

Пожалуйста, предоставьте код Visual Basic .NET для подключения к учетной записи PRO Drive hq


Отвечать
19.11.2016 0:25:49

  • arsene16pcs017
  • (1посты)
Предмет: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ
Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

 Здравствуйте! Я разработал свой веб-проект. Не могли бы вы предоставить мне все необходимые процессы для обмена файлами (текст, видео, аудио) в облаке, чтобы к ним могли получить доступ другие пользователи? Также нужны коды и инструкции для загрузки и скачивания файлов на DriveHQ! Спасибо


Отвечать
15.01.2018 22:32:28

  • DriveHQSupport_
  • (676посты)
Предмет: Re: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу Driv...

Пользователь: arsene16pcs017  -  15.01.2018 22:32:28

Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

 Здравствуйте! Я разработал свой веб-проект. Не могли бы вы предоставить мне все необходимые процессы для обмена файлами (текст, видео, аудио) в облаке, чтобы к ним могли получить доступ другие пользователи? Также нужны коды и инструкции для загрузки и скачивания файлов на DriveHQ! Спасибо

Re: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

Спасибо, что связались с нами. 

Ответы на основные вопросы, касающиеся обмена/публикации контента, вы сможете найти в нашем руководстве пользователя: https://www.drivehq.com/ServiceManual.aspx. Если у вас есть конкретные вопросы, пожалуйста, напишите нам по электронной почте support@drivehq.com И мы сделаем все возможное, чтобы вам помочь. 

 

Спасибо,
Поддержка DriveHQ


 


Отвечать
16.01.2018 8:32:57

  • glorber
  • (1посты)
Предмет: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ
Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

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

Можете поделиться примером кода на Swift для подключения к FTP-серверу DriveHQ?

Спасибо.


Отвечать
22.09.2018 6:59:05

  • stleojohn
  • (1посты)
Предмет: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ
Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

 При попытке выполнить этот код у меня возникает ошибка "неизвестная ошибка". Пожалуйста, помогите мне


Отвечать
26.11.2019 20:42:14

  • DriveHQ Support
  • (32посты)
Предмет: Re: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу Driv...

Пользователь: stleojohn  -  26.11.2019 20:42:14

Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

 При попытке выполнить этот код у меня возникает ошибка "неизвестная ошибка". Пожалуйста, помогите мне

Re: Пример кода FTP-клиента (исходный код на C#): подключение к FTP-серверу DriveHQ

Пожалуйста, опубликуйте фрагмент кода и сообщение об ошибке. Также протестируйте его в FileZilla, чтобы убедиться, что ваша сеть не блокирует FTP-соединение.


Отвечать
26.11.2019 21:32:26

  • liveieee
  • (2посты)
Предмет: программа-FTP-клиент на Python
программа-FTP-клиент на Python

Не могли бы вы, пожалуйста, поделиться версией Python для Drivehq


Отвечать
31.12.2019 4:28:41

Добавить в закладки и поделиться
Быстрый ответ

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003