\ DriveHQ Customer Support Forum \
Leer/Responder : 103440/7
  • DriveHQSupport_
  • (676publicaciones)
Código de ejemplo de cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

Muchos usuarios han preguntado cómo conectarse al servidor FTP de DriveHQ en sus propios proyectos de software. En este mensaje, primero proporcionaremos información general sobre FTP, seguida de un fragmento de código fuente en C#.

DriveHQ ofrece servicio de alojamiento de servidor FTP. Admitimos los protocolos FTP y FTPS estándar. Una de las principales ventajas de nuestro servicio FTP es: está perfectamente integrado con nuestros amplios servicios de TI en la nube. Los usuarios pueden acceder a sus archivos FTP mediante un navegador web, Unidad mapeada (WebDAV) o el software cliente DriveHQ FileManager. También pueden usar nuestra herramienta de administración de grupos basada en web para crear y administrar usuarios FTP (subusuarios).

El protocolo FTP estándar se considera inseguro, ya que transmite datos sin cifrado. Para una seguridad SSL robusta, puede utilizar FTPS (FTP sobre SSL/TLS). Existen dos métodos para activar la seguridad SSL:

Implícito: El cliente FTP se conecta directamente a un número de puerto FTPS especial (el predeterminado es el 990);

Explícito (FTPES): El cliente FTP se conecta al puerto FTP habitual número 21 y, a continuación, emite el comando STARTTLS para actualizar la seguridad.

El servidor FTP de DriveHQ admite tanto FTPS como FTPES. La mayoría de las aplicaciones cliente FTP admiten FTPS y FTPES, por ejemplo, FileZilla, CuteFTP, WsFTP, SmartFTP, WinSCP y Fetch, etc.

Existe otro protocolo seguro de transferencia de archivos llamado SFTP, que a menudo se confunde con "FTP seguro"; de hecho, significa "Protocolo de transferencia de archivos SSH", un protocolo de transferencia de archivos completamente diferente. Desde el punto de vista de la seguridad, SSL/TLS y SSH son prácticamente iguales. Claramente, SSL/TLS es más popular que SSH. El servidor FTP de DriveHQ no es compatible con SFTP, ya que no vemos una necesidad imperiosa de este protocolo.

FTP en modo activo y pasivo:

Una conexión FTP puede incluir dos conexiones TCP (canales): el canal de comandos y el canal de datos. El canal de comandos se utiliza para enviar comandos FTP; el canal de datos se utiliza para transferir grandes cantidades de datos. El FTP en modo activo requiere que el servidor FTP se conecte al cliente FTP para establecer la conexión de datos. Esto suele considerarse inseguro y muchos firewalls/routers lo bloquean. El FTP en modo pasivo requiere que el cliente FTP se conecte al servidor FTP en un número de puerto diferente. Se considera seguro y rara vez se bloquea. El servidor FTP de DriveHQ admite tanto FTP activo como pasivo. Sin embargo, si su router/firewall o software de seguridad bloquea el FTP activo, no funcionará. Es interesante observar que la mayoría de los routers modernos sí admiten FTP activo.

Nota: El cliente FTP de línea de comandos de Microsoft no admite FTP pasivo. Casi todos los demás programas cliente FTP admiten tanto FTP activo como pasivo.

FTP y ProFTP

DriveHQ cuenta con dos sitios FTP: ftp.drivehq.com, accesible para todos los usuarios; y proftp.drivehq.com, disponible solo para miembros de pago (incluidos los subusuarios de una cuenta de grupo de pago). Dado que proftp.drivehq.com solo está disponible para miembros de pago, no admite FTP anónimo. Para obtener más información sobre nuestro servicio de alojamiento de servidores FTP, visite:

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

 

Código fuente de ejemplo de un cliente FTP

El siguiente código fuente en C# se proporciona tal cual, sin ningún tipo de soporte. Puede usarlo libremente en su propio software o redistribuirlo. El código de ejemplo muestra cómo conectarse a nuestro servidor FTP y ejecutar comandos FTP, como LIST, GET y PUT; también puede ver cómo configurarlo para usar FTP pasivo y SSL.


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

///
/// Copyright (c) 2003-2016, Drive Headquarters, Inc. 
/// 
/// El código de ejemplo del cliente FTP muestra cómo conectarse al servidor FTP de DriveHQ usando C#.
/// Puedes usar el código o redistribuirlo gratuitamente. El código se proporciona TAL CUAL, sin restricciones 
/// DriveHQ no ofrece soporte ni garantía. No se responsabiliza del uso de este código.
///
espacio de nombres FTPClientSample
{
    Programa de clases
    {
        static string ftpServer = "ftp.drivehq.com"; // También puedes usar proftp.drivehq.com si tienes una cuenta de pago.
        cadena estática nombre_de_usuario = "TU_NOMBRE_DE_USUARIO"; // Tu nombre de usuario de DriveHQ
        cadena estática contraseña = "TU_CONTRASEÑA"; // Tu contraseña de DriveHQ
        static void Main(string[] args)
        {
            // Enumerar una carpeta en el servidor FTP
            //Lista("/"); 

            // Descargar un archivo del servidor FTP
            //DescargarArchivo("ServerFileName.jpg", @"c:\temp\ClientFileName.jpg");

            // Subir un archivo al servidor FTP
            SubirArchivo(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        ///
        /// Sube un archivo al servidor FTP.
        ///
        /// una ruta de archivo local
        /// la ruta en el servidor FTP, como /temp/filename
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            si (String.IsNullOrWhiteSpace(srcFilePath))
                lanzar nueva ArgumentNullException("Ruta del archivo de origen.");

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

            Uri serverUri = GetUri(destFilePath);

            // La URL del servidor debe comenzar con el esquema ftp://.
            si (serverUri.Scheme != Uri.UriSchemeFtp)
                devolver falso;

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

            // leer el contenido del archivo en una matriz 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 el contenido del archivo al servidor FTP
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

            FtpWebResponse respuesta = (FtpWebResponse)solicitud.GetResponse();
            Console.WriteLine("Estado de la respuesta: {0} - {1}", response.StatusCode, response.StatusDescription);

            devolver verdadero;
        }

        ///
        /// Descarga el archivo srcFilePath del servidor FTP al archivo destFilePath. Si es nulo, guárdalo en la carpeta actual.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            si (String.IsNullOrWhiteSpace(srcFilePath))
                lanzar nueva ArgumentNullException("Ruta del archivo de origen.");

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

            Uri serverUri = GetUri(srcFilePath);

            //// La URL del servidor debe comenzar con el esquema ftp://.
            si (serverUri.Scheme != Uri.UriSchemeFtp)
                devolver falso;

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

            FtpWebResponse respuesta = (FtpWebResponse)solicitud.GetResponse();
            Stream responseStream = response.GetResponseStream();

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

            búfer de bytes[] = nuevo byte[32 * 1024];

            mientras(verdadero) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                si (bytesLeídos == 0)
                    romper;

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

            Console.WriteLine("Estado de la respuesta: {0} - {1}", response.StatusCode, response.StatusDescription);

            devolver verdadero;
        }

        ///
        /// Listar el contenido de una carpeta FTP
        ///
        ///
        ///
        public static string List(string path)
        {

            Uri serverUri = GetUri(path);

            //// La URL del servidor debe comenzar con el esquema ftp://.
            si (serverUri.Scheme != Uri.UriSchemeFtp)
                devolver ""; 

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

            FtpWebResponse respuesta = (FtpWebResponse)solicitud.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            cadena resultado = sr.ReadToEnd();
            Console.WriteLine("Estado de la respuesta: {0} - {1}", response.StatusCode, response.StatusDescription + "\r\n" + result);

            devolver resultado;
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            FtpWebRequest solicitud = (FtpWebRequest)WebRequest.Create(serverUri);
            solicitud.HabilitarSsl = verdadero;
            solicitud.UsePassive = verdadero;
            solicitud.UseBinary = verdadero;
            solicitud.MantenerEnVida = verdadero;
            solicitud.Credenciales = nueva CredencialDeRed(nombredeusuario, contraseña);
            solicitud.Método = método;

            solicitud de devolución;
        }

        privado estático Uri GetUri(string rutaArchivoRemoto)
        {
            Uri ftpServerUri = new Uri("ftp://" + ftpServer);
            devolver nueva Uri(ftpServerUri, remoteFilePath);
        }

    }
}
 

10/05/2016 19:01:04

  • ajayreigns
  • (1publicaciones)
Sujeto: Necesito código VB.NET para conectar una cuenta PRO de DriveHQ
Necesito código VB.NET para conectar una cuenta PRO de DriveHQ

Por favor, comparte el código Visual Basic .NET para conectar la cuenta de PRO Drive HQ


Responder
19/11/2016 0:25:49

  • arsene16pcs017
  • (1publicaciones)
Sujeto: Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servido...
Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

 ¡Hola! He diseñado mi proyecto web. ¿Podrían proporcionarme todos los procesos para compartir mis archivos (texto, vídeos, audios) en la nube para que otros puedan acceder a ellos? ¡Necesito el proceso y el código para subir y descargar archivos en DriveHQ! Gracias


Responder
15/01/2018 22:32:28

  • DriveHQSupport_
  • (676publicaciones)
Sujeto: Re: Código de ejemplo de cliente FTP (código fuente en C#): conexión al servidor...

Usuario: arsene16pcs017  -  15/01/2018 22:32:28

Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

 ¡Hola! He diseñado mi proyecto web. ¿Podrían proporcionarme todos los procesos para compartir mis archivos (texto, vídeos, audios) en la nube para que otros puedan acceder a ellos? ¡Necesito el proceso y el código para subir y descargar archivos en DriveHQ! Gracias

Re: Código de ejemplo de cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

Gracias por contactarnos. 

En nuestro manual de servicio encontrará respuestas a cualquier pregunta básica sobre cómo compartir o publicar contenido: https://www.drivehq.com/ServiceManual.aspx. Si tiene alguna pregunta específica, envíe un correo electrónico support@drivehq.com y haremos todo lo posible por ayudarle. 

 

Gracias,
Soporte de DriveHQ


 


Responder
16/01/2018 8:32:57

  • glorber
  • (1publicaciones)
Sujeto: Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servido...
Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

Estoy desarrollando una aplicación para iOS usando Swift. La aplicación genera un archivo de datos JSON que me gustaría subir y descargar desde la aplicación a DriveHQ y viceversa.

¿Podrías compartir un ejemplo de código Swift para conectarse al servidor FTP de DriveHQ?

Gracias.


Responder
22/09/2018 6:59:05

  • stleojohn
  • (1publicaciones)
Sujeto: Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servido...
Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

 Me aparece un error de excepción desconocido al intentar ejecutar este código. Por favor, ayúdenme


Responder
26/11/2019 20:42:14

  • DriveHQ Support
  • (32publicaciones)
Sujeto: Re: Código de ejemplo de cliente FTP (código fuente en C#): conexión al servidor...

Usuario: stleojohn  -  26/11/2019 20:42:14

Re: Código de ejemplo del cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

 Me aparece un error de excepción desconocido al intentar ejecutar este código. Por favor, ayúdenme

Re: Código de ejemplo de cliente FTP (código fuente en C#): conexión al servidor FTP de DriveHQ

Por favor, publique su fragmento de código y el mensaje de error. Además, pruébelo en FileZilla para asegurarse de que su red no bloquea la conexión FTP.


Responder
26/11/2019 21:32:26

  • liveieee
  • (2publicaciones)
Sujeto: programa cliente FTP en Python
programa cliente FTP en Python

¿Podrías compartir la versión de Python para DriveHQ


Responder
31/12/2019 4:28:41

Marcar como favorito y compartir
Responder rápidamente

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003