Subir fichero por FTP con vb6 (visual basic 6)

Bienvenidos a VerTutoriales.com, en esta ocasión vamos a ver como subir un archivo local a un servidor remoto por FTP utilizando el componente INET de visual basic.

Actualmente estoy desarrollando una aplicación de gestión para cableoperadoras, esta aplicación contempla las necesidades básicas para mis clientes, pero seguimos ampliando módulos para dejar la aplicación cada vez más completa y que le solucione más problemas a los usuarios. Sino habéis visto el dossier que apuntaba en el enlace anterior, os resumo que lo que hace la aplicación es facturar a sus clientes, generando las facturas e imprimiendolas (por ahora). Quiero darle un valor añadido y pensando un poco en el ahorro de papel y tinta (que hay que cuidar nuestro entorno) vamos a generar las facturas en PDF (que ya está listo) y vamos a subirlas a un espacio FTP para que sus clientes puedan consultar la factura online, facilitando así la emisión de factura, ahorrando ese enorme gasto y ayudando al medio ambiente!

Para comenzar, hemos creado una función para facilitar la reutilización de la operación tantas veces queramos y que lleva en su interior la asignación de parámetros de configuración para la conexión con el servidor. Estos parámetros son 4.

Dim sIP As String   ‘IP del servidor
Dim sUsuarioFTP As String  ‘Nombre del usuario FTP
Dim sPassFTP As String  ‘Clave de acceso al ftp
Dim sHost As String  ‘nombre del host

Una vez tengamos esos parámetros veamos la función completa:

Function SubirFTP(sOrigen As String, sDestino As String)

Dim sIP As String
Dim sUsuarioFTP As String
Dim sPassFTP As String
Dim sHost As String

sIP = “ftp://109.205.137.230”
sUsuarioFTP = “codedk92”
sPassFTP = “123654!”
sHost = “codigo.dkreativo.es”

With InetFTP

‘Asigna la Url, es decir el nombre del Host FTP
.URL = sIP
.RemoteHost = sHost

.Protocol = icFTP

‘nombre de usuario y password de la cuanta FTP
.UserName = sUsuarioFTP
.Password = sPassFTP

‘Escribe el fichero en el servidor con el comando Put
.Execute .URL, “put ” + sOrigen + ” ” + sDestino

Do While .StillExecuting
DoEvents
Loop

UploadFile = (.ResponseCode = 0)
.Execute , “quit”

End With

End Function

Como podéis ver, la función recibe 2 parámetros, sOrigen debe de tener la dirección completa con el nombre de archivo que queremos subir, y en sDestino, la dirección completa con el nombre de archivo donde queremos ubicarlo.

Asignamos los parámetros de conexión y listo. Recordad añadir el complemento INET a vuestro proyecto y ponedle el nombre InetFTP para que lo reconozca.

Espero que os sirva, la función está probada y espero que en poco tiempo esté en producción, aunque antes hay que crear el acceso a los usuarios en la web del cliente para que puedan ver su factura, pero poco a poco.

Si tenéis cualquier sugerencia o duda, estoy a vuestra disposición!

Un saludo!

Te puede interesar:

16 comentarios

  • marco antonio commented on 13 enero, 2013 Reply

    Hola,

    Podrias por favor colocar un ejemplo sencillo del uso de la funcion? Estoy tratando de aplicarla, pero al correr el programa me sale un aviso indicando que debo colocar un signo de igual al colocar el nombre de la funcion con los parametros (origen y destino), estoy usando el evento click de un boton para llamar a la funcion y colocar un archivo en el FTP destino.

    Mil gracias, marco.

    • VideoTutoriales commented on 13 enero, 2013 Reply

      Es por la forma de llamarla, si estás realizando la llamada a la función y en este caso no devuelve nada, en vb6 se llaman las funciones sin los paréntesis, en este caso sería:

      SubirFTP “c:/miarchivoasubir.txt”, “./miarchivoenserver.txt”

      Así debe de funcionarte sin pedirte el igual.

      La subida al FTP con vb6 es así de sencilla. Si aún así no te soluciona, pega el código que tienes a ver que puede ser.

  • Juian commented on 14 junio, 2013 Reply

    Oye donde me descargo el complemento INET para incluirlo al proyecto… No lo encuentro en las librerias por defecto que tiene el visual 6

  • Jimgod commented on 27 mayo, 2014 Reply

    Es muy Lento… tarda mucho y con un txt de 3KB

    • videotutoriales commented on 28 mayo, 2014 Reply

      ¿Lo sube realmente? A mi me funciona sin problema y a una velocidad relativa a mi conexión.

      He llegado a subir cientos de megas para una aplicación que subía un comprimido y no ha dado problemas 😉

      Salud!

  • Joker Systems commented on 21 agosto, 2014 Reply

    olle pana de donde salen estos valores

    ‘Asigna la Url, es decir el nombre del
    .URL = sFTP

    .Protocol = icFTP no lo asignas valores a estas variables

  • videotutoriales commented on 24 agosto, 2014 Reply

    Ya lo he corregido 😉
    Supongo que al pasar el tutorial en vb6 puse otras variables para que se entendiera mejor:

    el sFTP es sIP.

    Con respecto a la icFTP es una constante que trae el objeto INET como podría ser otro:

    .AccessType = icDirect

    Un saludo!

  • Julián commented on 22 enero, 2016 Reply

    Muchas gracias por tu desinterés

  • daniel commented on 24 enero, 2016 Reply

    capo!!!

  • MIMI commented on 22 junio, 2016 Reply

    HOLA donde me descargo el complemento INET para incluirlo al proyecto… No lo encuentro en las librerias por defecto que tiene el visual 6

  • MIMI commented on 22 junio, 2016 Reply

    seleccionar desde la ficha componentes Microsoft Internet Transfer control
    ya lo vi! gracias de todas formas
    🙂

    • Carlos Dk commented on 23 junio, 2016 Reply

      Tú preguntas, tú te respondes! Nada 😀

  • AjRoBSeYeR commented on 15 noviembre, 2016 Reply

    una preguntilla, hace la subida “bien”, es decir el fichero aparece en el servidor ftp, pero con 0Bytes… es algo que puedo estar haciendo mal?

    • Carlos Dk commented on 21 noviembre, 2016 Reply

      Disculpa la tardanza en responder, parece ser que WordPress no quiere notificarme nuevos comentarios 🙂
      Con respecto a tu duda, revisa la configuración del FTP. es extraño que llegue a crearte el fichero pero se suba vacío. ¿Con qué configuración lo lanzas?

      Un saludo!

      • Carlos Dk commented on 21 noviembre, 2016 Reply

        El mensaje “Daily user sending quota exceeded” dice “La cuota de envío de uso diario se excedió”, en otras palabras, “estás enviando más de lo que puedes”. No es problema ni de tu outlook ni de ninguna configuración de usuario, es del servidor que tiene una limitación de cuota de envío y ya la superaste en el día.

        Lo recomendable es que revises lo contratado y sino ves nada “raro” habla directamente con el administrador del servidor.

        Espero que te sirva! Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *