• Viernes 8 de Noviembre de 2024, 15:37

Autor Tema:  Ftp  (Leído 6600 veces)

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Ftp
« en: Miércoles 17 de Noviembre de 2004, 16:41 »
0
Salu2. Alguno me puede poner un ejemplo de como mandar un archivo, en este caso una DB por FTP, con codigo VB, VB6 en mi caso,.

   He encontrado esto pero no encuentro ningun ejemplo y está en inglés :(.

FtpOpenFile
HINTERNET FtpOpenFile(
    IN HINTERNET hFtpSession,
    IN LPCSTR lpszFileName,
    IN DWORD fdwAccess,
    IN DWORD dwFlags,
    IN DWORD dwContext
);

Gracias. :comp:
Mi mujer tiene un físico bárbaro!!!. Einstein.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Ftp
« Respuesta #1 en: Miércoles 17 de Noviembre de 2004, 17:26 »
0
VISITA ESTA PAGINA ALL API, ELLOS TIENEN UN EJEMPLO DE UN FTP, HECHO POR ELLOS MUY BUENA LA PAGINA, TE LA RECOMIENDO
El pasado son solo recuerdos, el futuro son solo sueños

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ftp
« Respuesta #2 en: Miércoles 17 de Noviembre de 2004, 17:29 »
0
Kaixo Sagutxo!

Puedes utilizar un control Microsoft Internet Transfer Control. Añádelo a tu proyecto. Su uso es muy sencillo, fíjate en la ayuda del control.

Citar
Inet1.Execute "FTP://ftp.microsoft.com", _
"GET Disclaimer.txt C:\Temp\Disclaimer.txt"

También podrías crear un archivo de proceso por lotes con los comandos FTP que necesites y ejecutarlo.

Espero que esto te sirva.

Agur.

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Ftp
« Respuesta #3 en: Miércoles 17 de Noviembre de 2004, 18:51 »
0
Salu2. Muchas gracias a los 2, acabo de conseguirlo mirando lo de las AllApi, y ahora leo esto :). que casualidad, ciertamente tiene un ejemplo buenísimo.

   Respeto al lo de archivo por lotes, lo tengo así pero se queda una ventana de DOS 'CMD', mientras está pasando los datos, y algunos usuarios son muy cafres, necesito que no pueda cerrarlo hasta que la transferencia sea terminada.

   Probare tambien el control Microsoft Internet Transfer Control para ver cual de los 2 es mas sencillo aunke en esto casi prefiero que sea eficaz. :).

   No se si podré controlar la espera hasta el fnal de la transferencia, si no es así, pediré ayuda nuevamente.

Muchas gracias. :comp:
Mi mujer tiene un físico bárbaro!!!. Einstein.

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Ftp
« Respuesta #4 en: Jueves 18 de Noviembre de 2004, 12:59 »
0
Salu2.

Finalmente he utilizado el ejemplo del AllAPI, ya que me deja controlar ciertas cosas como el port a utilizar, pero me ha surgido otro problemilla.

   ¿Sabriais orientarme de como hacer un seguimiento a lo que estoy subiendo?

Os dejo el ejemplo de AllAPI que utilizo.

Brroz, reconozco que como sencillo, tu opción es mucho mas sencilla sin duda. :)

Gracias. Agur.

+++++
P.D.
Y si sabeis como mostrar lo que hay en un tipo explorador ya serie el no va mas. :). aunke esto solo seria para dejarlo bonito, no s necesario.

Llevo todo el dia con ello y solo consigo ponerlo en un MsFleshGrid. :(

Gracias.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Mi mujer tiene un físico bárbaro!!!. Einstein.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ftp
« Respuesta #5 en: Viernes 19 de Noviembre de 2004, 09:59 »
0
Kaixo.

Usando un control Inet supongo que se podría hacer utilizando el comando FTP 'dir' y/o los comandos 'ls' o 'mls' para mostrar el contenido de uno o varios directorios respectivamente. Para recuperar esta información, fíjate en lo que dice la ayuda del control.

Citar
En este ejemplo se utiliza el método GetChunk en el evento StateChanged para obtener un bloque de datos. Se emplea una instrucción Select Case para determinar lo que se debe hacer en todos los estados posibles. En el ejemplo se supone que en el formulario hay un control TextBox llamado txtData.

Private Sub Inet1_StateChanged(ByVal State As Integer)
   ' Recupera la respuesta del servidor con el método
   ' GetChunk cuando State = 12. En este ejemplo se
   ' supone que los datos son texto.

   Select Case State
   ' ... No se muestran los demás casos.

   Case icResponseReceived ' 12
      Dim vtData As Variant ' Variable de datos.
      Dim strData As String: strData = ""
      Dim bDone As Boolean: bDone = False

      ' Obtiene el primer bloque.
      vtData = Inet1.GetChunk(1024, icString)
      DoEvents
      Do While Not bDone
         strData = strData & vtData
         DoEvents
         ' Obtiene el bloque siguiente.
         vtData = Inet1.GetChunk(1024, icString)
         If Len(vtData) = 0 Then
            bDone = True
         End If
      Loop

      txtData.Text = strData
   End Select
   
End Sub

A ver si esto te sirve.

Por cierto, este control también permite definir el puerto a usar (joder, parece que esté haciendo propaganda del control... que no, hombre, que no, sólo para que lo tengas en cuenta).

Agur

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Ftp
« Respuesta #6 en: Viernes 19 de Noviembre de 2004, 15:01 »
0
Salu2.
He probado tu control Brroz. pero me da un error.

Código: Text
  1. ValStr = Dir1.Path & "\" & File1.FileName
  2. Inet1.UserName = "red"
  3. Inet1.Password = "red1"
  4. Inet1.RemotePort = 21
  5.  
  6. Inet1.Execute "FTP://AquiHayUnaIP", "PUT " & File1.FileName & " " & ValStr
  7.  

No se puede conectar con el host remoto. Este error me da. y te aseguro que el ftp funciona ya que lo uso amenudo.

   Otra duda, no he encontrado la forma de pasar los datos como binary :). ¿Lo hará automaticamente como binary?

Muchas gracias.
Mi mujer tiene un físico bárbaro!!!. Einstein.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ftp
« Respuesta #7 en: Lunes 29 de Noviembre de 2004, 14:42 »
0
Kaixo.

No sé si a estas alturas te servirá de mucho, pero ...

El error tampoco sé a qué puede deberse, pero tal vez tenga algo que ver con esta nota:
Citar
Nota   Cuando utilice el método OpenURL, establezca la propiedad URL antes que las propiedades Password y UserName. Si establece la propiedad URL en último lugar, las propiedades UserName y Password estarán establecidas a "".
Al no estar establecida previamente una url, puede que con el usuario y la contraseña pase algo de esto...

prueba así a ver:
Código: Text
  1.  
  2. INet1.URL="FTP://AquiHayUnaIP"
  3. INet1.UserName = "red"
  4. Inet1.Password = "red1"
  5. Inet1.RemotePort = 21
  6. INet1.OpenURL
  7. INet1.Execute "Type Bynari"
  8. INet1.Execute "PUT archivo1 archivo2"
  9.  
  10.  

Sobre lo del tipo binario... en el código anterior puedes encontrar la solución: ejecuta el comando Type bynari.

Fíjate También en este ejemplo de la ayuda:
Código: Text
  1.  
  2. Dim b() As Byte
  3. Dim strURL As String
  4. ' Establece strURL a una dirección válida.
  5. strURL = "FTP://ftp.GreatSite.com/China.exe"
  6. b() = Inet1.OpenURL(strURL, icByteArray)
  7.  
  8. Open "C:\Temp\China.exe" For Binary Access _
  9. Write As #1
  10. Put #1, , b()
  11. Close #1
  12.  
  13.  

Espero que esto te sirva de algo.

Agur.

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Ftp
« Respuesta #8 en: Viernes 17 de Diciembre de 2004, 22:59 »
0
Salu2. ya siento contestarte tan tarde pero he tenido problemas de salud que me han inpedido hacerlo.

Sigue sin funcinar, y no me devuelve ningun error así que no te puedo mostrar nada mas que el codigo

Código: Text
  1.  
  2. Inet1.OpenURL = "ftp://AKI.VA.UNA.IP" ' Ip 100% fiable
  3. Inet1.UserName = "red"
  4. Inet1.Password = "red1"
  5. Inet1.RemotePort = 21
  6. Inet1.Execute "PUT " & File1.FileName & " " & ValStr
  7.  
  8.  

No se, supongo que no te sirve de mucho, pero es que ya no se que mas poner :(.
Gracias. :smartass:
Mi mujer tiene un físico bárbaro!!!. Einstein.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ftp
« Respuesta #9 en: Sábado 18 de Diciembre de 2004, 08:23 »
0
Kaixo Sagutxo.

Pos no sé qué puede ocurrir... pero puedes probar supervisando el evento del control StateChanged e ir depurando lo que ocurre a través del parámetro estado.

Citar
Los valores de estado son:

Constante Valor Descripción
icNone 0 No hay estado del que informar.
icHostResolvingHost 1 El control está buscando la dirección IP del host especificado.
icHostResolved 2 El control encontró la dirección IP del host especificado.
icConnecting 3 El control está conectando con el equipo host.
icConnected 4 El control conectó correctamente con el equipo host.
icRequesting 5 El control está enviando una solicitud al equipo host.
icRequestSent 6 El control envió correctamente la solicitud.
icReceivingResponse 7 El control está recibiendo una respuesta del equipo host.
icResponseReceived 8 El control recibió correctamente una respuesta del equipo host.
icDisconnecting 9 El control se está desconectando del equipo host.
icDisconnected 10 El control se desconectó correctamente del equipo host.
icError 11 Se produjo un error en la comunicación con el equipo host.
icResponseCompleted 12 La solicitud se completó y se recibieron todos los datos.

Suerte.