\ DriveHQ Customer Support Forum \
Ler/Responder : 103385/7
  • DriveHQSupport_
  • (676posts)
Exemplo de código de cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

Muitos usuários perguntaram como se conectar ao servidor FTP do DriveHQ em seus próprios projetos de software. Nesta mensagem, gostaríamos de fornecer algumas informações gerais sobre FTP, seguidas de um exemplo de código-fonte em C#.

A DriveHQ oferece serviço de hospedagem de servidor FTP. Damos suporte aos protocolos FTP e FTPS. Uma das principais vantagens do nosso serviço FTP é a integração perfeita com nossa ampla gama de serviços de TI em nuvem. Os usuários podem acessar seus arquivos FTP usando um navegador da web. unidade mapeada (WebDAV) ou o software cliente DriveHQ FileManager. Eles também podem usar nossa ferramenta de administração de grupos baseada na web para criar e gerenciar usuários FTP (subusuários).

O protocolo FTP padrão é considerado inseguro, pois transmite dados sem criptografia. Para uma segurança SSL robusta, você pode usar o FTPS (FTP sobre SSL/TLS). Existem dois métodos para ativar a segurança SSL:

Implícito: O cliente FTP conecta-se diretamente a um número de porta FTPS especial (o padrão é 990);

Explícito (FTPES): O cliente FTP se conecta à porta FTP padrão número 21 e, em seguida, emite um comando STARTTLS para atualizar a segurança.

O servidor FTP da DriveHQ suporta FTPS e FTPES. A maioria dos aplicativos cliente FTP também suporta FTPS e FTPES, como FileZilla, CuteFTP, WsFTP, SmartFTP, WinSCP e Fetch, entre outros.

Existe outro protocolo seguro de transferência de arquivos chamado SFTP, que muitas vezes é confundido com "FTP seguro"; na verdade, significa "Protocolo de Transferência de Arquivos SSH", um protocolo de transferência de arquivos completamente diferente. Do ponto de vista da segurança, SSL/TLS e SSH são praticamente iguais. Claramente, o SSL/TLS é mais popular que o SSH. O servidor FTP da DriveHQ não oferece suporte a SFTP, pois não vemos uma necessidade significativa para ele.

FTP em modo ativo e passivo:

Uma conexão FTP pode incluir duas conexões TCP (canais): o canal de comando e o canal de dados. O canal de comando é usado para enviar comandos FTP; o canal de dados é usado para transferir grandes quantidades de dados. O FTP em Modo Ativo exige que o servidor FTP se conecte ao cliente FTP para estabelecer a conexão de dados. Isso geralmente é considerado inseguro e é bloqueado por muitos firewalls/roteadores. O FTP em Modo Passivo exige que o cliente FTP se conecte ao servidor FTP em uma porta diferente. É considerado seguro e raramente é bloqueado. O servidor FTP da DriveHQ suporta FTP Ativo e Passivo. No entanto, se o seu roteador/firewall ou software de segurança bloquear o FTP Ativo, ele não funcionará. É interessante notar que a maioria dos roteadores mais recentes suporta FTP Ativo.

Observação: o cliente FTP de linha de comando da Microsoft não oferece suporte ao FTP passivo. Quase todos os outros programas clientes de FTP oferecem suporte tanto ao FTP ativo quanto ao passivo.

FTP e ProFTP

A DriveHQ possui dois servidores FTP: ftp.drivehq.com, acessível a todos os usuários; e proftp.drivehq.com, disponível apenas para membros pagantes (incluindo subusuários de uma conta de grupo paga). Como o proftp.drivehq.com é exclusivo para membros pagantes, ele não oferece suporte a FTP anônimo. Para mais informações sobre nosso serviço de hospedagem de servidores FTP, visite [link para o site]:

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

 

Código-fonte de exemplo de um cliente FTP

O código-fonte C# a seguir é fornecido "como está", sem qualquer suporte. Sinta-se à vontade para usá-lo em seu próprio software ou redistribuí-lo. O código de exemplo mostra como conectar-se ao nosso servidor FTP e executar comandos FTP, como LIST, GET e PUT; você também pode ver como configurá-lo para usar FTP passivo e SSL.


usando o sistema;
usando System.Collections.Generic;
usando System.Linq;
usando System.Text;
usando System.Threading.Tasks;
Usando System.Net;
usando System.IO;
usando System.Security.Cryptography.X509Certificates;

///
/// Direitos autorais (c) 2003-2016, Drive Headquarters, Inc. 
/// 
/// O código de exemplo do cliente FTP mostra como conectar-se ao servidor FTP da DriveHQ usando C#.
/// Você pode usar o código ou redistribuí-lo gratuitamente. O código é fornecido "NO ESTADO EM QUE SE ENCONTRA", sem licença 
/// A DriveHQ não se responsabiliza por qualquer suporte ou garantia decorrente do uso do código.
///
namespace FTPClientSample
{
    Programa de aula
    {
        static string ftpServer = "ftp.drivehq.com"; // você também pode usar proftp.drivehq.com se tiver uma conta paga.
        string estática username = "SEU_NOME_DE_USUÁRIO"; // Seu nome de usuário do DriveHQ
        string estática senha = "SUA_SENHA"; // Sua senha do DriveHQ
        static void Main(string[] args)
        {
            // Listar uma pasta no servidor FTP
            //Lista("/"); 

            // Baixar um arquivo do servidor FTP
            //BaixarArquivo("NomeDoArquivoDoServidor.jpg", @"c:\temp\NomeDoArquivoDoCliente.jpg");

            // Enviar um arquivo para o servidor FTP
            UploadFile(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        ///
        /// Faça o upload de um arquivo para o servidor FTP.
        ///
        /// um caminho de arquivo local
        /// o caminho no servidor FTP, como /temp/nome_do_arquivo
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            se (String.IsNullOrWhiteSpace(srcFilePath))
                lançar nova ArgumentNullException("Caminho do arquivo de origem.");

            se (String.IsNullOrWhiteSpace(destFilePath))
                caminhoArquivoDestino = Caminho.ObterNomeArquivo(caminhoArquivoOrigem);

            Uri serverUri = GetUri(destFilePath);

            // O serverUri deve começar com o esquema ftp://.
            se (serverUri.Scheme != Uri.UriSchemeFtp)
                retornar falso;

            FtpWebRequest solicitação = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.UploadFile);

            // Ler o conteúdo do arquivo para um array de bytes
            FileStream sourceStream = new FileStream(srcFilePath, FileMode.Open, FileAccess.Read);
            byte[] fileContent = new byte[sourceStream.Length];
            sourceStream.Read(fileContent, 0, fileContent.Length);
            sourceStream.Close();

            // Enviar o conteúdo do arquivo para o servidor FTP
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

            FtpWebResponse resposta = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("Status da resposta: {0} - {1}", response.StatusCode, response.StatusDescription);

            retornar verdadeiro;
        }

        ///
        /// Faça o download do arquivo srcFilePath no servidor FTP para o arquivo destFilePath. Se for nulo, salve na pasta atual.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            se (String.IsNullOrWhiteSpace(srcFilePath))
                lançar nova ArgumentNullException("Caminho do arquivo de origem.");

            se (String.IsNullOrWhiteSpace(destFilePath))
                caminhoArquivoDestino = Caminho.ObterNomeArquivo(caminhoArquivoOrigem);

            Uri serverUri = GetUri(srcFilePath);

            //// O serverUri deve começar com o esquema ftp://.
            se (serverUri.Scheme != Uri.UriSchemeFtp)
                retornar falso;

            FtpWebRequest solicitação = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.DownloadFile);

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

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

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

            enquanto(verdadeiro) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                se (bytesRead == 0)
                    quebrar;

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

            Console.WriteLine("Status da resposta: {0} - {1}", response.StatusCode, response.StatusDescription);

            retornar verdadeiro;
        }

        ///
        /// Liste o conteúdo de uma pasta FTP
        ///
        ///
        ///
        public static string List(string caminho)
        {

            Uri serverUri = GetUri(caminho);

            //// O serverUri deve começar com o esquema ftp://.
            se (serverUri.Scheme != Uri.UriSchemeFtp)
                retornar ""; 

            FtpWebRequest solicitação = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.ListDirectory);

            FtpWebResponse resposta = (FtpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string result = sr.ReadToEnd();
            Console.WriteLine("Status da resposta: {0} - {1}", response.StatusCode, response.StatusDescription + "\r\n" + result);

            retornar resultado;
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            FtpWebRequest solicitação = (FtpWebRequest)WebRequest.Create(serverUri);
            request.EnableSsl = true;
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;
            solicitação.Credenciais = novo NetworkCredential(nome de usuário, senha);
            request.Method = método;

            retornar solicitação;
        }

        privado estático Uri GetUri(string caminhoArquivoRemoto)
        {
            Uri ftpServerUri = new Uri("ftp://" + ftpServer);
            retornar novo Uri(ftpServerUri, remoteFilePath);
        }

    }
}
 

10/05/2016 19:01:04

  • ajayreigns
  • (1posts)
Assunto: Preciso de um código em VB.NET para conectar minha conta PRO do DriveHQ
Preciso de um código em VB.NET para conectar minha conta PRO do DriveHQ

Por favor, compartilhe o código Visual Basic .NET para conectar à conta PRO Drive hq


Responder
19/11/2016 00:25:49

  • arsene16pcs017
  • (1posts)
Assunto: Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao serv...
Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

 Olá!! Desenvolvi meu projeto web. Gostaria de saber todos os passos para compartilhar meus arquivos (textos, vídeos, áudios) na nuvem, para que outras pessoas possam acessá-los. Preciso de instruções e códigos para fazer upload e download de arquivos no DriveHQ! Obrigado


Responder
15/01/2018 22:32:28

  • DriveHQSupport_
  • (676posts)
Assunto: Re: Exemplo de código de cliente FTP (código-fonte em C#): conectando-se ao serv...

Usuário: arsene16pcs017  -  15/01/2018 22:32:28

Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

 Olá!! Desenvolvi meu projeto web. Gostaria de saber todos os passos para compartilhar meus arquivos (textos, vídeos, áudios) na nuvem, para que outras pessoas possam acessá-los. Preciso de instruções e códigos para fazer upload e download de arquivos no DriveHQ! Obrigado

Re: Exemplo de código de cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

Obrigado por entrar em contato conosco. 

Você poderá encontrar respostas para quaisquer perguntas básicas sobre compartilhamento/publicação em nosso manual de serviço: https://www.drivehq.com/ServiceManual.aspx. Se você tiver dúvidas específicas, envie um e-mail support@drivehq.com E faremos o possível para te ajudar. 

 

Obrigado,
Suporte DriveHQ


 


Responder
16/01/2018 08:32:57

  • glorber
  • (1posts)
Assunto: Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao serv...
Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

Estou desenvolvendo um aplicativo iOS usando Swift. O aplicativo gera um arquivo de dados JSON que eu gostaria de enviar e receber do DriveHQ, e vice-versa.

Você poderia compartilhar um exemplo de código Swift para conectar ao servidor FTP do DriveHQ?

Obrigado.


Responder
22/09/2018 06:59:05

  • stleojohn
  • (1posts)
Assunto: Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao serv...
Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

 Estou recebendo um erro de exceção desconhecida ao tentar executar este código. Por favor, me ajude


Responder
26/11/2019 20:42:14

  • DriveHQ Support
  • (32posts)
Assunto: Re: Exemplo de código de cliente FTP (código-fonte em C#): conectando-se ao serv...

Usuário: stleojohn  -  26/11/2019 20:42:14

Re: Código de exemplo do cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

 Estou recebendo um erro de exceção desconhecida ao tentar executar este código. Por favor, me ajude

Re: Exemplo de código de cliente FTP (código-fonte em C#): conectando-se ao servidor FTP da DriveHQ

Por favor, poste seu trecho de código e a mensagem de exceção. Teste também no FileZilla para garantir que sua rede não esteja bloqueando a conexão FTP.


Responder
26/11/2019 21:32:26

  • liveieee
  • (2posts)
Assunto: programa cliente ftp em python
programa cliente ftp em python

Você poderia compartilhar a versão do Python para o DriveHQ, por favor


Responder
31/12/2019 04:28:41

Adicionar aos favoritos e compartilhar
Resposta rápida

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003