Ftp con visual basic 6
Necesito hacer un programa en VB 6.0 que me permita enviar y recibir archivos usando FTP.
Como puedo hacerlo, no se que objetos ni que comandos utilizar, o si es que hay que agregar componentes, etc.
Como puedo hacerlo, no se que objetos ni que comandos utilizar, o si es que hay que agregar componentes, etc.
1 Respuesta
Respuesta de fvomaster
1
1
Sabes que nunca me ha tocado realizar este trabajo, sin embargo he encontrado algunos sitios que te podrían servir...
http://usuarios.lycos.es/tervenet/programas.htm
(De acá puedes descargar un código fuente que te enseña a conectar a una ftp con Visual 6)
Lo otro que conseguí es esto...
Usar el control Internet Transfer
El control Internet Transfer implementa dos protocolos de Internet de gran difusión: Protocolo de transferencia de hipertexto (HTTP) y Protocolo de transferencia de archivos (FTP). Con el control Internet Transfer se puede conectar con cualquier sitio que utilice alguno de estos protocolos y obtener archivos mediante los métodos OpenURL o Execute.
Aplicaciones posibles
Agregar un explorador FTP a cualquier aplicación.
Crear una aplicación que transfiera automáticamente archivos de un sitio público FTP.
Analizar un sitio del World Wide Web para buscar referencias gráficas y transferir únicamente los gráficos.
Mostrar una vista personalizada de datos dinámicos obtenidos de una página Web.
Funcionamiento básico
La funcionalidad del control Internet Transfer depende del protocolo que desee usar. Como los dos protocolos contemplados funcionan de forma distinta, las operaciones que puede realizar dependen del protocolo elegido. Por ejemplo, el método GetHeader sólo funciona con HTTP (documentos HTML).
Sin embargo, hay algunos procedimientos que son comunes a ambos protocolos. Básicamente, para poder usar cualquiera de los protocolos, debe hacer lo siguiente:
Establecer la propiedad AccessType a un servidor proxy válido.
Invocar el método OpenURL con una dirección URL válida.
Invocar el método Execute con una dirección URL válida y un comando adecuado para el protocolo.
Usar el método GetChunk para recuperar datos del búfer.
Establecer la propiedad AccessType: usar un servidor proxy
Para poder establecer cualquier tipo de conexión con Internet, primero debe determinar cómo está conectado el equipo a Internet. Si está conectado a una intranet, probablemente la conexión será a través de un servidor proxy.
Brevemente, un servidor proxy es un intermediario entre su equipo e Internet. Todos los equipos de una intranet que necesitan conectarse con Internet deben hacerlo a través de un servidor proxy. De este modo, el proxy funciona como un servidor de seguridad entre la intranet e Internet, ya que descarta las peticiones de usuarios finales no válidos y las peticiones externas para proteger la intranet de acciones hostiles.
Para averiguar la configuración de proxy del equipo
Nota Los pasos siguientes sólo son aplicables a los sistemas con Windows 95 y Windows NT® 4.0.
En la barra de tareas del equipo, haga clic en Inicio.
En el elemento Configuración, haga clic en Panel de control.
Haga doble clic en el icono Internet.
En el cuadro de diálogo Propiedades de Internet, seleccione Conexión.
En Servidor proxy, confirme que está activada la casilla de verificación Conectar a través de un servidor proxy.
Si está activada, elija Configuración. En el cuadro de diálogo encontrará el nombre de los servidores proxy que se emplean para los distintos protocolos. Si no hay definido ningún proxy, consulte al administrador del sistema los servidores proxy disponibles.
Si prefiere usar un proxy distinto de los que aparecen en el cuadro de diálogo, establezca la propiedad AccessType al valor icNamedProxy (2) y luego establezca la propiedad Proxy al nombre del servidor proxy, como en el código siguiente:
Inet1.Proxy = "miNombreProxy"
Inet1.AccessType = icNamedProxy
Por otra parte, si desea usar el servidor proxy predeterminado (el que se encuentra en el registro del equipo), pase por alto la propiedad Proxy y simplemente establezca AccessType al valor icUseDefault (0).
Los valores de AccessType se muestran en la tabla siguiente:
Constante Valor Descripción
IcUseDefault 0 (Predeterminado) Utiliza las opciones predeterminadas. El control emplea los valores predeterminados del registro para el acceso a Internet.
IcDirect 1 Directo a Internet. El control tiene conexión directa con Internet.
IcNamedProxy 2 Proxy con nombre. Indica al control que utilice el servidor proxy especificado en la propiedad Proxy.
Llamar al método OpenURL
Una vez establecida la propiedad AccessType, la operación más básica es usar el método OpenURL con una dirección URL válida. Al usar el método OpenURL, el resultado dependerá de la dirección URL de destino. Por ejemplo, la dirección URL siguiente devolverá el documento HTML que se encuentra en www.microsoft.com/spanish:
' Un control TextBox llamado Text1 contiene el
' resultado del método. El control Internet Transfer
' se llama Inet1.
Text1.Text = Inet1.OpenURL("http://www.microsoft.com/spanish")
Como resultado, el control TextBox se puebla con el código fuente HTML, que puede tener una apariencia semejante a la siguiente:
En este caso, la acción predeterminada era devolver el documento HTML ubicado en la dirección URL. Sin embargo, si se modifica la dirección URL de modo que su destino sea un archivo de texto específico, se obtendrá el archivo real. Por ejemplo, el código siguiente:
Text1.Text = Inet1. _
OpenURL("ftp://ftp.microsoft.com/disclaimer.txt")
obtendrá el texto real del archivo, como se muestra a continuación:
Sugerencia Cuando utilice el método OpenURL o el método Execute, no necesita establecer la propiedad Protocol. El control Internet Transfer establecerá automáticamente el protocolo correcto, según determine la parte de protocolo de la dirección URL.
Por último, puede usar el método OpenURL con una dirección URL que incluya datos anexos. Por ejemplo, muchos sitios Web ofrecen la posibilidad de buscar en una base de datos. Para realizar la búsqueda, envíe una dirección URL con los criterios de búsqueda. Por ejemplo, el código siguiente utiliza un sistema de búsqueda llamado "search.exe" con el criterio "find=Maui".
Dim strURL As String
strURL = _
"http://www.howzit.com/cgi-bin/search.exe?find=maui
Text1.Text = Inet1.OpenURL(strURL)
Si el sistema de búsqueda encuentra un elemento que se ajuste a los criterios, creará y devolverá un documento HTML con la información correspondiente.
Guardar en un archivo con el método OpenURL
Si desea guardar en un archivo los datos obtenidos con el método OpenURL, puede usar las instrucciones Open, Put y Close, como se muestra en el código siguiente. En este ejemplo se transfiere un archivo binario a una matriz de bytes antes de guardar los datos en disco:
Dim strURL As String
Dim bData() As Byte ' Variable de datos
Dim intFile As Integer ' Variable FreeFile
strURL = _
"ftp://ftp.microsoft.com/Softlib/Softlib.exe"
intFile = FreeFile() ' Establece intFile a un
' archivo no utilizado.
' El resultado del método OpenURL va a la matriz
' de bytes y ésta se guarda entonces en disco.
bData() = Inet1.OpenURL(strURL, icByteArray)
Open "C:\Temp\Softlib.exe" For Binary Access Write _
As #intFile
Put #intFile, , bData()
Close #intFile
Se puede emplear un procedimiento similar para escribir un archivo de texto en disco, pero ahora no es necesaria una matriz de bytes, pues los datos se guardan directamente en el archivo:
Dim strURL As String ' Cadena URL
Dim intFile As Integer ' Variable FreeFile
IntFile = FreeFile()
strURL = "http://www.microsoft.com/spanish"
Open "c:\temp\MSsource.txt" For Output _
As #IntFile
Write #IntFile, Inet1.OpenURL(strURL)
Close #IntFile
Transmisión síncrona y asíncrona
El método OpenURL produce una transmisión síncrona de los datos. En este contexto, "síncrona" significa que la operación de transferencia se produce antes de que se ejecute cualquier otro procedimiento. Por tanto, la transferencia de datos debe haber terminado antes de que pueda ejecutarse otro código.
Por otra parte, el método Execute produce una transmisión asíncrona. Cuando se invoca el método Execute, la operación de transferencia se produce independientemente de otros procedimientos. Por tanto, después de invocar el método Execute es posible ejecutar otro código mientras se reciben datos en segundo plano.
¿Qué significa esto para el usuario del control Internet Transfer? En pocas palabras, el uso del método OpenURL produce una corriente directa de datos que puede guardar en disco (como se ha mostrado anteriormente) o ver directamente en un control TextBox (si los datos son de texto). Por otra parte, si utiliza el método Execute para obtener datos, deberá observar el estado de conexión del control mediante el evento StateChanged. Cuando se llegue al estado adecuado, invoque el método GetChunk para obtener datos del búfer del control. Esta operación se explica con detalle más adelante.
Usar el método Execute con el protocolo FTP
El método Execute tiene cuatro argumentos: url, operation, data y requestHeaders. Las operaciones FTP sólo utilizan el argumento operation y el argumento url, que es opcional. Por ejemplo, para obtener un archivo de un equipo remoto, puede usar el código siguiente:
Inet1.Execute "FTP://ftp.microsoft.com", _
"GET disclaimer.txt C:\Temp\Disclaimer.txt"
Si está acostumbrado a usar FTP para obtener archivos de servidores FTP anónimos, le resultarán familiares algunos comandos empleados para desplazarse por los árboles del servidor y traer los archivos a un disco duro local. Por ejemplo, para cambiar de directorio con el protocolo FTP se utiliza el comando "CD" con la ruta de acceso del directorio al que desea cambiar.
Para las operaciones más comunes, como llevar un archivo a un servidor o traer un archivo desde él, el control Internet Transfer utiliza el mismo comando, o uno similar, con el método Execute. Por ejemplo, en el código siguiente se utiliza el comando "CD" como argumento del método Execute para cambiar de directorio:
' El cuadro de texto txtURL contiene la ruta de acceso
' que se va a abrir. El cuadro de texto txtRemotePath
' contiene la ruta de acceso a la que hay que cambiar.
Inet1. Execute txtURL.Text, "CD " & txtRemotePath.Text
Nota Al usar el método Execute con comandos FTP no se emplean los argumentos data y requestHeaders. En su lugar, todas las operaciones y sus parámetros se pasan como una única cadena en el argumento operation, con los parámetros separados por un espacio en blanco. En las descripciones siguientes no se deben confundir los términos "archivo1" y "archivo2" con los argumentos data y requestHeaders.
La sintaxis de las operaciones FTP es la siguiente:
nombre_operación archivo1 archivo2
Por ejemplo, para obtener un archivo, el código siguiente incluye el nombre de la operación ("GET") y los dos nombres de archivo que la operación requiere:
' Obtiene el archivo llamado Disclaimer.txt y lo copia
' a C:\Temp\Disclaimer.txt
Inet1.Execute, _
"GET Disclaimer.txt C:\Temp\Disclaimer.txt"
En la tabla siguiente se enumeran los comandos FTP admitidos por el control:
Operación Descripción Ejemplo
CD archivo1 Cambia de directorio. Cambia al directorio especificado en archivo1. Execute , "CD docs\misdocs"
CDUP Cambia al directorio primario. Equivale a "CD". Execute, "CDUP"
DELETE archivo1 Elimina el archivo especificado en archivo1. Execute , "DELETE discard.txt"
DIR [ archivo1 ] Busca en el directorio especificado en archivo1. Si no se especifica archivo1, se busca en el directorio de trabajo actual. Utilice el método GetChunk para obtener los datos. Execute , "DIR /misdocs"
GET archivo1 archivo2 Recupera el archivo remoto especificado en archivo1 y crea el nuevo archivo local especificado en archivo2. Execute , _"GET tómame.txt C:\metienes.txt"
MKDIR archivo1 Crea el directorio especificado en archivo1. El éxito de la operación depende de los privilegios del usuario en el host remoto. Execute , "MKDIR /miDir"
PUT archivo1 archivo2 Copia el archivo local especificado en archivo1 al host remoto especificado en archivo2. Execute , _"PUT C:\colócame.txt /colócame.txt"
PWD Indica el directorio de trabajo. Devuelve el nombre del directorio actual. Puede usar el método GetChunk para obtener los datos. Execute, "PWD"
QUIT Cierra la conexión actual Execute, "QUIT"
RECV archivo1 archivo2 Igual que GET. Execute , _"RECV tómame.txt C:\metienes.txt"
RENAME archivo1 archivo2 Cambia el nombre de un archivo. El éxito de la operación depende de los privilegios del usuario en el host remoto. Execute, "RENAME viejo.txt nuevo.txt"
RMDIR archivo1 Quita un directorio. El éxito de la operación depende de los privilegios del usuario en el host remoto. Execute, "RMDIR DirAntiguo"
SEND archivo1 Copia un archivo al sitio FTP. (Igual que PUT. ) Execute , _"SEND C:\colócame.txt /colócame.txt
SIZE archivo1 Devuelve el tamaño del archivo especificado en archivo1. Execute "SIZE /grande.txt"
Importante Si el servidor proxy es de tipo CERN, las conexiones FTP directas (con el método Execute) no están permitidas. En tal caso, para obtener un archivo, utilice el método OpenURL con las instrucciones Open, Put y Close, como se ha indicado antes en "Guardar en un archivo con el método OpenURL". También puede usar el método OpenURL para obtener un listado de un directorio si invoca el método y especifica el directorio de destino como la dirección URL.
Usar el método Execute con el protocolo HTTP
El protocolo HTTP permite a los clientes solicitar datos del servidor con los comandos GET, HEAD, POST y PUT. Estas operaciones se describen en la tabla siguiente:
Operación Descripción Ejemplo
GET Obtiene el archivo indicado en url. Execute "http://www.microsoft.com/spanish" & _"/default.htm", "GET"
HEAD Obtiene sólo los encabezados del archivo indicado en la propiedad URL. Execute, "HEAD"
POST Proporciona datos adicionales para admitir una petición al host remoto. Execute, "POST", strFormData
PUT Reemplaza los datos en la dirección URL especificada. Execute, "PUT", "replace.htm"
Interfaz de puerta de enlace o gateway común y método Execute
Muchos sitios del World Wide Web ofrecen la posibilidad de buscar en una base de datos. Esto se logra mediante la capacidad del protocolo HTTP para enviar consultas a través de la Interfaz común de puerta de enlace o gateway (CGI).
No corresponde a este tema explicar la CGI. Sin embargo, si está familiarizado con ella, puede usar el método Execute para crear una aplicación que simule el comportamiento de los sitios del World Wide Web. Por ejemplo, el código siguiente muestra una cadena de consulta CGI típica:
http://www.yippee.com/cgi-bin/find.exe?find=Hangzhou
La misma consulta podría enviarse con el método Execute, de esta forma:
Dim strURL As String, strFormData As String
strURL = "//www.yippee.com/cgi-bin/find.exe"
strFormData = "find=Hangzhou"
Inet1.Execute strURL, "POST", strFormData
Si espera un resultado del servidor (como en el ejemplo anterior), debe usar el método GetChunk para obtener el documento HTML resultante.
Usar el evento State con el método GetChunk
Al transferir datos de un equipo remoto, se establece una conexión asíncrona. Por ejemplo, si utiliza el método Execute con la operación "GET", el servidor enviará el archivo solicitado. Cuando se haya obtenido todo el archivo, el argumento State devolverá icResponseCompleted (12). En ese momento, puede usar el método GetChunk para recuperar los datos del búfer, como en el ejemplo siguiente:
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant ' Data variable.
Select Case State
' ... Los demás casos no se muestran.
Case icResponseCompleted ' 12
' Abre un archivo en el que escribir.
Open txtOperation For Binary Access _
Write As #intFile
' Obtiene el primer fragmento. NOTA: especifique
' una matriz de bytes (icByteArray) para
' recuperar un archivo binario.
vtData = Inet1.GetChunk(1024, icString)
Do While LenB(vtData) > 0
Put #intFile, , vtData
' Obtiene el siguiente fragmento.
vtData = Inet1.GetChunk(1024, icString)
Loop
Put #intFile, , vtData
Close #intFile
End Select
End Sub
Iniciar sesión en los servidores FTP
Hay servidores FTP de dos tipos: públicos y privados. Los servidores públicos, como su nombre indica, están abiertos a todos. Los servidores privados, por otra parte, no le permitirán el acceso si no es un usuario de confianza del servidor. En cualquier caso, el protocolo FTP solicita un nombre de usuario y una contraseña. Estos dos elementos se utilizan para autentificar al usuario y permitir (o impedir) sus acciones posteriores.
Para iniciar una sesión en los servidores públicos, la práctica habitual es especificar como nombre de usuario "anonymous", (UserName = "anonymous") y enviar su propia dirección de correo electrónico como contraseña. Sin embargo, este proceso se simplifica aún más con el control Internet Transfer. De forma predeterminada, no hay que indicar los valores de las propiedades UserName y Password, pues el control envía "anonymous" en la primera y su dirección de correo electrónico en la segunda.
Si va a iniciar una sesión en un servidor privado, sólo tiene que establecer las propiedades UserName, Password y URL a los valores apropiados e invocar el método Execute, como se muestra en el ejemplo siguiente:
With Inet1
.URL = "ftp://ftp.algúnsitioftp.com/"
.UserName = "Juan García"
.Password = "mAuI&9$6"
.Execute,"DIR" ' Devuelve el directorio.
.Execute,"CLOSE" ' Cierra la conexión.
End With
Una vez invocado el método Execute, la conexión FTP permanecerá abierta. Puede entonces continuar utilizando el método Execute para realizar otras operaciones de FTP, como CD y GET. Cuando haya completado la sesión, cierre la conexión con el método Execute y con la operación CLOSE. También puede cerrar la conexión automáticamente si modifica la propiedad URL e invoca el método OpenURL o Execute; esta acción cerrará la conexión FTP actual para abrir la nueva dirección URL.
Espero que te sirva...
Un abrazo desde Chile.
Fvomaster
http://usuarios.lycos.es/tervenet/programas.htm
(De acá puedes descargar un código fuente que te enseña a conectar a una ftp con Visual 6)
Lo otro que conseguí es esto...
Usar el control Internet Transfer
El control Internet Transfer implementa dos protocolos de Internet de gran difusión: Protocolo de transferencia de hipertexto (HTTP) y Protocolo de transferencia de archivos (FTP). Con el control Internet Transfer se puede conectar con cualquier sitio que utilice alguno de estos protocolos y obtener archivos mediante los métodos OpenURL o Execute.
Aplicaciones posibles
Agregar un explorador FTP a cualquier aplicación.
Crear una aplicación que transfiera automáticamente archivos de un sitio público FTP.
Analizar un sitio del World Wide Web para buscar referencias gráficas y transferir únicamente los gráficos.
Mostrar una vista personalizada de datos dinámicos obtenidos de una página Web.
Funcionamiento básico
La funcionalidad del control Internet Transfer depende del protocolo que desee usar. Como los dos protocolos contemplados funcionan de forma distinta, las operaciones que puede realizar dependen del protocolo elegido. Por ejemplo, el método GetHeader sólo funciona con HTTP (documentos HTML).
Sin embargo, hay algunos procedimientos que son comunes a ambos protocolos. Básicamente, para poder usar cualquiera de los protocolos, debe hacer lo siguiente:
Establecer la propiedad AccessType a un servidor proxy válido.
Invocar el método OpenURL con una dirección URL válida.
Invocar el método Execute con una dirección URL válida y un comando adecuado para el protocolo.
Usar el método GetChunk para recuperar datos del búfer.
Establecer la propiedad AccessType: usar un servidor proxy
Para poder establecer cualquier tipo de conexión con Internet, primero debe determinar cómo está conectado el equipo a Internet. Si está conectado a una intranet, probablemente la conexión será a través de un servidor proxy.
Brevemente, un servidor proxy es un intermediario entre su equipo e Internet. Todos los equipos de una intranet que necesitan conectarse con Internet deben hacerlo a través de un servidor proxy. De este modo, el proxy funciona como un servidor de seguridad entre la intranet e Internet, ya que descarta las peticiones de usuarios finales no válidos y las peticiones externas para proteger la intranet de acciones hostiles.
Para averiguar la configuración de proxy del equipo
Nota Los pasos siguientes sólo son aplicables a los sistemas con Windows 95 y Windows NT® 4.0.
En la barra de tareas del equipo, haga clic en Inicio.
En el elemento Configuración, haga clic en Panel de control.
Haga doble clic en el icono Internet.
En el cuadro de diálogo Propiedades de Internet, seleccione Conexión.
En Servidor proxy, confirme que está activada la casilla de verificación Conectar a través de un servidor proxy.
Si está activada, elija Configuración. En el cuadro de diálogo encontrará el nombre de los servidores proxy que se emplean para los distintos protocolos. Si no hay definido ningún proxy, consulte al administrador del sistema los servidores proxy disponibles.
Si prefiere usar un proxy distinto de los que aparecen en el cuadro de diálogo, establezca la propiedad AccessType al valor icNamedProxy (2) y luego establezca la propiedad Proxy al nombre del servidor proxy, como en el código siguiente:
Inet1.Proxy = "miNombreProxy"
Inet1.AccessType = icNamedProxy
Por otra parte, si desea usar el servidor proxy predeterminado (el que se encuentra en el registro del equipo), pase por alto la propiedad Proxy y simplemente establezca AccessType al valor icUseDefault (0).
Los valores de AccessType se muestran en la tabla siguiente:
Constante Valor Descripción
IcUseDefault 0 (Predeterminado) Utiliza las opciones predeterminadas. El control emplea los valores predeterminados del registro para el acceso a Internet.
IcDirect 1 Directo a Internet. El control tiene conexión directa con Internet.
IcNamedProxy 2 Proxy con nombre. Indica al control que utilice el servidor proxy especificado en la propiedad Proxy.
Llamar al método OpenURL
Una vez establecida la propiedad AccessType, la operación más básica es usar el método OpenURL con una dirección URL válida. Al usar el método OpenURL, el resultado dependerá de la dirección URL de destino. Por ejemplo, la dirección URL siguiente devolverá el documento HTML que se encuentra en www.microsoft.com/spanish:
' Un control TextBox llamado Text1 contiene el
' resultado del método. El control Internet Transfer
' se llama Inet1.
Text1.Text = Inet1.OpenURL("http://www.microsoft.com/spanish")
Como resultado, el control TextBox se puebla con el código fuente HTML, que puede tener una apariencia semejante a la siguiente:
En este caso, la acción predeterminada era devolver el documento HTML ubicado en la dirección URL. Sin embargo, si se modifica la dirección URL de modo que su destino sea un archivo de texto específico, se obtendrá el archivo real. Por ejemplo, el código siguiente:
Text1.Text = Inet1. _
OpenURL("ftp://ftp.microsoft.com/disclaimer.txt")
obtendrá el texto real del archivo, como se muestra a continuación:
Sugerencia Cuando utilice el método OpenURL o el método Execute, no necesita establecer la propiedad Protocol. El control Internet Transfer establecerá automáticamente el protocolo correcto, según determine la parte de protocolo de la dirección URL.
Por último, puede usar el método OpenURL con una dirección URL que incluya datos anexos. Por ejemplo, muchos sitios Web ofrecen la posibilidad de buscar en una base de datos. Para realizar la búsqueda, envíe una dirección URL con los criterios de búsqueda. Por ejemplo, el código siguiente utiliza un sistema de búsqueda llamado "search.exe" con el criterio "find=Maui".
Dim strURL As String
strURL = _
"http://www.howzit.com/cgi-bin/search.exe?find=maui
Text1.Text = Inet1.OpenURL(strURL)
Si el sistema de búsqueda encuentra un elemento que se ajuste a los criterios, creará y devolverá un documento HTML con la información correspondiente.
Guardar en un archivo con el método OpenURL
Si desea guardar en un archivo los datos obtenidos con el método OpenURL, puede usar las instrucciones Open, Put y Close, como se muestra en el código siguiente. En este ejemplo se transfiere un archivo binario a una matriz de bytes antes de guardar los datos en disco:
Dim strURL As String
Dim bData() As Byte ' Variable de datos
Dim intFile As Integer ' Variable FreeFile
strURL = _
"ftp://ftp.microsoft.com/Softlib/Softlib.exe"
intFile = FreeFile() ' Establece intFile a un
' archivo no utilizado.
' El resultado del método OpenURL va a la matriz
' de bytes y ésta se guarda entonces en disco.
bData() = Inet1.OpenURL(strURL, icByteArray)
Open "C:\Temp\Softlib.exe" For Binary Access Write _
As #intFile
Put #intFile, , bData()
Close #intFile
Se puede emplear un procedimiento similar para escribir un archivo de texto en disco, pero ahora no es necesaria una matriz de bytes, pues los datos se guardan directamente en el archivo:
Dim strURL As String ' Cadena URL
Dim intFile As Integer ' Variable FreeFile
IntFile = FreeFile()
strURL = "http://www.microsoft.com/spanish"
Open "c:\temp\MSsource.txt" For Output _
As #IntFile
Write #IntFile, Inet1.OpenURL(strURL)
Close #IntFile
Transmisión síncrona y asíncrona
El método OpenURL produce una transmisión síncrona de los datos. En este contexto, "síncrona" significa que la operación de transferencia se produce antes de que se ejecute cualquier otro procedimiento. Por tanto, la transferencia de datos debe haber terminado antes de que pueda ejecutarse otro código.
Por otra parte, el método Execute produce una transmisión asíncrona. Cuando se invoca el método Execute, la operación de transferencia se produce independientemente de otros procedimientos. Por tanto, después de invocar el método Execute es posible ejecutar otro código mientras se reciben datos en segundo plano.
¿Qué significa esto para el usuario del control Internet Transfer? En pocas palabras, el uso del método OpenURL produce una corriente directa de datos que puede guardar en disco (como se ha mostrado anteriormente) o ver directamente en un control TextBox (si los datos son de texto). Por otra parte, si utiliza el método Execute para obtener datos, deberá observar el estado de conexión del control mediante el evento StateChanged. Cuando se llegue al estado adecuado, invoque el método GetChunk para obtener datos del búfer del control. Esta operación se explica con detalle más adelante.
Usar el método Execute con el protocolo FTP
El método Execute tiene cuatro argumentos: url, operation, data y requestHeaders. Las operaciones FTP sólo utilizan el argumento operation y el argumento url, que es opcional. Por ejemplo, para obtener un archivo de un equipo remoto, puede usar el código siguiente:
Inet1.Execute "FTP://ftp.microsoft.com", _
"GET disclaimer.txt C:\Temp\Disclaimer.txt"
Si está acostumbrado a usar FTP para obtener archivos de servidores FTP anónimos, le resultarán familiares algunos comandos empleados para desplazarse por los árboles del servidor y traer los archivos a un disco duro local. Por ejemplo, para cambiar de directorio con el protocolo FTP se utiliza el comando "CD" con la ruta de acceso del directorio al que desea cambiar.
Para las operaciones más comunes, como llevar un archivo a un servidor o traer un archivo desde él, el control Internet Transfer utiliza el mismo comando, o uno similar, con el método Execute. Por ejemplo, en el código siguiente se utiliza el comando "CD" como argumento del método Execute para cambiar de directorio:
' El cuadro de texto txtURL contiene la ruta de acceso
' que se va a abrir. El cuadro de texto txtRemotePath
' contiene la ruta de acceso a la que hay que cambiar.
Inet1. Execute txtURL.Text, "CD " & txtRemotePath.Text
Nota Al usar el método Execute con comandos FTP no se emplean los argumentos data y requestHeaders. En su lugar, todas las operaciones y sus parámetros se pasan como una única cadena en el argumento operation, con los parámetros separados por un espacio en blanco. En las descripciones siguientes no se deben confundir los términos "archivo1" y "archivo2" con los argumentos data y requestHeaders.
La sintaxis de las operaciones FTP es la siguiente:
nombre_operación archivo1 archivo2
Por ejemplo, para obtener un archivo, el código siguiente incluye el nombre de la operación ("GET") y los dos nombres de archivo que la operación requiere:
' Obtiene el archivo llamado Disclaimer.txt y lo copia
' a C:\Temp\Disclaimer.txt
Inet1.Execute, _
"GET Disclaimer.txt C:\Temp\Disclaimer.txt"
En la tabla siguiente se enumeran los comandos FTP admitidos por el control:
Operación Descripción Ejemplo
CD archivo1 Cambia de directorio. Cambia al directorio especificado en archivo1. Execute , "CD docs\misdocs"
CDUP Cambia al directorio primario. Equivale a "CD". Execute, "CDUP"
DELETE archivo1 Elimina el archivo especificado en archivo1. Execute , "DELETE discard.txt"
DIR [ archivo1 ] Busca en el directorio especificado en archivo1. Si no se especifica archivo1, se busca en el directorio de trabajo actual. Utilice el método GetChunk para obtener los datos. Execute , "DIR /misdocs"
GET archivo1 archivo2 Recupera el archivo remoto especificado en archivo1 y crea el nuevo archivo local especificado en archivo2. Execute , _"GET tómame.txt C:\metienes.txt"
MKDIR archivo1 Crea el directorio especificado en archivo1. El éxito de la operación depende de los privilegios del usuario en el host remoto. Execute , "MKDIR /miDir"
PUT archivo1 archivo2 Copia el archivo local especificado en archivo1 al host remoto especificado en archivo2. Execute , _"PUT C:\colócame.txt /colócame.txt"
PWD Indica el directorio de trabajo. Devuelve el nombre del directorio actual. Puede usar el método GetChunk para obtener los datos. Execute, "PWD"
QUIT Cierra la conexión actual Execute, "QUIT"
RECV archivo1 archivo2 Igual que GET. Execute , _"RECV tómame.txt C:\metienes.txt"
RENAME archivo1 archivo2 Cambia el nombre de un archivo. El éxito de la operación depende de los privilegios del usuario en el host remoto. Execute, "RENAME viejo.txt nuevo.txt"
RMDIR archivo1 Quita un directorio. El éxito de la operación depende de los privilegios del usuario en el host remoto. Execute, "RMDIR DirAntiguo"
SEND archivo1 Copia un archivo al sitio FTP. (Igual que PUT. ) Execute , _"SEND C:\colócame.txt /colócame.txt
SIZE archivo1 Devuelve el tamaño del archivo especificado en archivo1. Execute "SIZE /grande.txt"
Importante Si el servidor proxy es de tipo CERN, las conexiones FTP directas (con el método Execute) no están permitidas. En tal caso, para obtener un archivo, utilice el método OpenURL con las instrucciones Open, Put y Close, como se ha indicado antes en "Guardar en un archivo con el método OpenURL". También puede usar el método OpenURL para obtener un listado de un directorio si invoca el método y especifica el directorio de destino como la dirección URL.
Usar el método Execute con el protocolo HTTP
El protocolo HTTP permite a los clientes solicitar datos del servidor con los comandos GET, HEAD, POST y PUT. Estas operaciones se describen en la tabla siguiente:
Operación Descripción Ejemplo
GET Obtiene el archivo indicado en url. Execute "http://www.microsoft.com/spanish" & _"/default.htm", "GET"
HEAD Obtiene sólo los encabezados del archivo indicado en la propiedad URL. Execute, "HEAD"
POST Proporciona datos adicionales para admitir una petición al host remoto. Execute, "POST", strFormData
PUT Reemplaza los datos en la dirección URL especificada. Execute, "PUT", "replace.htm"
Interfaz de puerta de enlace o gateway común y método Execute
Muchos sitios del World Wide Web ofrecen la posibilidad de buscar en una base de datos. Esto se logra mediante la capacidad del protocolo HTTP para enviar consultas a través de la Interfaz común de puerta de enlace o gateway (CGI).
No corresponde a este tema explicar la CGI. Sin embargo, si está familiarizado con ella, puede usar el método Execute para crear una aplicación que simule el comportamiento de los sitios del World Wide Web. Por ejemplo, el código siguiente muestra una cadena de consulta CGI típica:
http://www.yippee.com/cgi-bin/find.exe?find=Hangzhou
La misma consulta podría enviarse con el método Execute, de esta forma:
Dim strURL As String, strFormData As String
strURL = "//www.yippee.com/cgi-bin/find.exe"
strFormData = "find=Hangzhou"
Inet1.Execute strURL, "POST", strFormData
Si espera un resultado del servidor (como en el ejemplo anterior), debe usar el método GetChunk para obtener el documento HTML resultante.
Usar el evento State con el método GetChunk
Al transferir datos de un equipo remoto, se establece una conexión asíncrona. Por ejemplo, si utiliza el método Execute con la operación "GET", el servidor enviará el archivo solicitado. Cuando se haya obtenido todo el archivo, el argumento State devolverá icResponseCompleted (12). En ese momento, puede usar el método GetChunk para recuperar los datos del búfer, como en el ejemplo siguiente:
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant ' Data variable.
Select Case State
' ... Los demás casos no se muestran.
Case icResponseCompleted ' 12
' Abre un archivo en el que escribir.
Open txtOperation For Binary Access _
Write As #intFile
' Obtiene el primer fragmento. NOTA: especifique
' una matriz de bytes (icByteArray) para
' recuperar un archivo binario.
vtData = Inet1.GetChunk(1024, icString)
Do While LenB(vtData) > 0
Put #intFile, , vtData
' Obtiene el siguiente fragmento.
vtData = Inet1.GetChunk(1024, icString)
Loop
Put #intFile, , vtData
Close #intFile
End Select
End Sub
Iniciar sesión en los servidores FTP
Hay servidores FTP de dos tipos: públicos y privados. Los servidores públicos, como su nombre indica, están abiertos a todos. Los servidores privados, por otra parte, no le permitirán el acceso si no es un usuario de confianza del servidor. En cualquier caso, el protocolo FTP solicita un nombre de usuario y una contraseña. Estos dos elementos se utilizan para autentificar al usuario y permitir (o impedir) sus acciones posteriores.
Para iniciar una sesión en los servidores públicos, la práctica habitual es especificar como nombre de usuario "anonymous", (UserName = "anonymous") y enviar su propia dirección de correo electrónico como contraseña. Sin embargo, este proceso se simplifica aún más con el control Internet Transfer. De forma predeterminada, no hay que indicar los valores de las propiedades UserName y Password, pues el control envía "anonymous" en la primera y su dirección de correo electrónico en la segunda.
Si va a iniciar una sesión en un servidor privado, sólo tiene que establecer las propiedades UserName, Password y URL a los valores apropiados e invocar el método Execute, como se muestra en el ejemplo siguiente:
With Inet1
.URL = "ftp://ftp.algúnsitioftp.com/"
.UserName = "Juan García"
.Password = "mAuI&9$6"
.Execute,"DIR" ' Devuelve el directorio.
.Execute,"CLOSE" ' Cierra la conexión.
End With
Una vez invocado el método Execute, la conexión FTP permanecerá abierta. Puede entonces continuar utilizando el método Execute para realizar otras operaciones de FTP, como CD y GET. Cuando haya completado la sesión, cierre la conexión con el método Execute y con la operación CLOSE. También puede cerrar la conexión automáticamente si modifica la propiedad URL e invoca el método OpenURL o Execute; esta acción cerrará la conexión FTP actual para abrir la nueva dirección URL.
Espero que te sirva...
Un abrazo desde Chile.
Fvomaster
- Compartir respuesta
- Anónimo
ahora mismo