Los rincones del API Win32: WinInet y FTP - Manipular la estructura de directorios

9 - Manipular la estructura de directorios

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
El equipo remoto tendrá una estructura de directorios como cualquier sistema operativo, en la cual nos podremos mover y manipular. Como en UNIX y MS-DOS, siempre estaremos situados en un directorio activo, en el cual se ejecutarán todas las operaciones que realicemos. Podemos averiguar cual es nuestro directorio activo a través de la función FtpGetCurrentDirectory: BOOL FtpGetCurrentDirectory( HINTERNET hConexión, LPTSTR lpszDirectorioActivo, LPDWORD lpdwLongitudDirectorio );

  • hConexión: un descriptor de conexión obtenido a través de InternetConnect.
  • lpszDirectorioActivo: un puntero a una cadena en la que se almacenará la ruta absoluta del directorio activo. Hay que tener en cuenta que los servidores FTP utilizan el separador de UNIX (“/”) y no la barra invertida de Windows (“\”).
  • lpdwLongitudDirectorio: un puntero a un valor de 32 bits en el que se pasa la longuitud máxima de la cadena lpszDirectorioActivo. Cuando la función retorna, en este valor se almacena el número de caracteres copiados.

La función retornará TRUE o FALSE dependiendo del éxito o fracaso.

Como es lógico, además de averiguar el directorio activo, también podremos cambiar este directorio activo, a través de la función SetCurrentDirectory:

BOOL FtpGetCurrentDirectory( HINTERNET hConexión, LPCTSTR lpszNuevoDirectorio );

  • hConexión: un descriptor de conexión obtenido a través de InternetConnect.
  • lpszNuevoDirectorio: un puntero a una cadena en la que se almacenará la ruta (absoluta o relativa) del nuevo directorio activo.

La función retorna TRUE si ha tenido éxito o FALSE en caso de error. En caso de retornar error, una de las posibles causas es que no tenemos permisos para acceder a dicho directorio. En tal caso, podemos hacer uso de la función InternetGetLastResponseInfo (de la que ya hablamos en el artículo WinInet y HTTP) para obtener el código de error retornado por el servidor.

Si en un momento dado queremos crear un nuevo directorio, debemos hacerlo a través de la función FtpCreateDirectory, con la siguiente sintaxis:

BOOL FtpCreateDirectory( HINTERNET hConexión, LPCTSTR lpszNombreDirectorio );

  • hConexión: un descriptor de conexión obtenido a través de InternetConnect.
  • lpszNuevoDirectorio: un puntero a una cadena en la que se indica la ruta (absoluta o relativa) del directorio a crear. Para dar el nombre a la carpeta hay que tener en cuenta las normas del sistema de archivos del servidor, normalmente UNIX o Windows.

La función retorna TRUE o FALSE. Podremos llamar, como ya hemos dicho, a la función InternetGetLastResposeInfo para averiguar el código y texto del mensaje de error retornado por el servidor.

Y lógicamente, también se podrá borrar un directorio (y todo su contenido) a través de la siguiente función:

BOOL FtpCreateDirectory( HINTERNET hConexión, LPCTSTR lpszDirectorio );

  • hConexión: un descriptor de conexión obtenido a través de InternetConnect.
  • lpszDirectorio: un puntero a una cadena en la que se indica la ruta (absoluta o relativa) del directorio a borrar. Es importante saber que no podemos borrar el directorio si es nuestro directorio activo, por lo que es recomendable hacer una llamada a FtpSetCurrentDirectory antes de realizar el borrado.

Esta función, como el resto, retornará TRUE o FALSE dependiendo del éxito o fracaso.
[editar]

12 opiniones

OTATO

MUY BUENA EXPLICACION.....
ME PARECIO EXCELENTE
AHORA SOLO KISIERA SABER COMO PONER MI CONEXION FTP DE MODO PASIVO.....SI NO ES MUCHO PEDIR
GRACIAS
Y MUY BUEN TRABAJO EH
OTATO

MUY BUENO EH
ME PARECE K ES EXCELENTE LA EXPLICACION DE ESTOS 2 PROTOCOLOS
ESTO ES BUENO CONOCER PARA TODOS
OTATO

PUES ESTA CHIDO LA EXPLICACION... PERO NO YO KISIERA SABER K PUERTO PUEDO ABRIR (K NO SEA EL 21) PARA MI SERVIDOR FTP
ESPERO ME AYUDEN CON ESO
DE ANTE MANO MUCHAS GRACIAS
Excelente aporte.

Es un tutorial muy bueno, y facil de entender.
Corrección.

En el punto 3. Del "modo pasivo" hay un error: 3. Para ciertas operaciones, es necesario realizar el envío de un fichero, por lo que se crea el canal de datos. Para ello el cliente crea una conexión física desde uno de sus puerto (puerto y) hasta un número de puerto del *cliente*. Este número de puerto fue el que indicó el servidor como respuesta del comando pasv (puerto z). De este modo, el cliente establece el canal de datos por el que se transmite la información. Donde dice *cliente* debería decir *servidor*.
1 2 3 | siguiente >

Tutoriales relacionados con 'Los rincones del API Win32: WinInet y FTP'

El protocolo FTP desde el API WinInet. Con este curso aprenderás a hacer un pequeño... Más »
Comienzo con un nuevo tema dentro dentro de la serie Los rincones del API Win32.... Más »
Entramos en temas interesantes: el acceso a recursos remotos a través del protocolo de aplicación... Más »
En el anterior curso dejamos muchos temas en el tintero, así que voy a terminar... Más »
Damos una visión detallada de una de las características más interesantes de esta tecnología de... Más »

Autor y licencia de 'Los rincones del API Win32: WinInet y FTP'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.