FTP_Service

142 views
Skip to first unread message

Kike. Sevilla

unread,
Oct 19, 2016, 5:20:02 AM10/19/16
to Comunidad de Visual Foxpro en Español
Hola Grupo:
Tengo un problema un poco "gordo" y necesito ayuda urgente. Tengo una función para bajar ficheros vía FTP, para esto uso FTP_Service y vfpconnection.fll los dos "mezclados". El porqué es muy sencillo, no tengo manuales de FTP_Service y no sé cómo tengo que hacer para ver los ficheros que hay en el sitio FTP y no sé cómo hacer para bajarlos. No sé cómo usar GetFtpDirectoryArray(lcdir, lcmask), le ponga lo que le ponga el "lcdir" y/o en "lcmask" siempre dice que no encuentra nada y por supuesto aquí menos GetFtpFile(lcRemoteFile, lcNewFile, llFailIfExists), no hay forma.

Por lo tanto he tenido que hacer un "híbrido" entre los dos.
Aquí le dejo la función. La explico:
Si desde el entorno de desarrollo y paso a paso la función funciona perfectamente, pero si desde el mismo entorno lo hago varias veces, esto viene de un bucle que está en el programa, sólo lo hace con el primer fichero, los demás se quedan parado en FTPGet(lcurl, tcficheros_bajada_3  , ""), todo lo demás funciona perfectamente.

Por favor el ruego una ayuda. 
Modo desesperación en on.




FUNCTION realiza_proceso( tcuser, tcpass, tchost, tcPort, tnlinea_DIRECTORIO, tcficheros_bajada_1,  tcficheros_bajada_2,  tcficheros_bajada_3)

LOCAL llresultado, lcraiz, llresultado 

lcraiz = SYS(5) + SYS(2003) + "\"    
llresultado = .T.

llabierto = openinternet(tcuser, tcpass, tchost, tcPort)
llesta_directorio = GetFtpDirectory("")

lccomentario = "Conectado a.. tchost = " + ALLTRIM(tchost) + " tcuser = " + ALLTRIM(tcuser) + "   tcpass = " + ALLTRIM(tcpass) + "  " + IIF(llabierto = .T., "ABIERTO", "NO ABIERTO")
va_por(lccomentario)

lcmira_fich =  tnlinea_DIRECTORIO+  tcficheros_bajada_3
lcmira_fich1 = lcmira_fich
FOR kl = 0 TO 50
IF FILE((lcmira_fich1))
lcmira_fich1 = SUBSTR(lcmira_fich,1,RAT(".",lcmira_fich) - 1) + "_" + PADL(TRANSFORM(KL + 1),3,"0") + SUBSTR(lcmira_fich,RAT(".",lcmira_fich) )
ELSE
tcficheros_bajada_3 = lcmira_fich1
exit
endif
endfor   
llrename_fichero = RenameFtpFile(tcficheros_bajada_1, tcficheros_bajada_2)  &&&Funciona bien  
IF llrename_fichero = .T.
lccomentario = "Renombra fichero " + tcficheros_bajada_1 + " ---> " + tcficheros_bajada_2
va_por(lccomentario)

SET LIBRARY TO 
SET LIBRARY TO (LOCFILE(lcraiz+ "ftp\vfpconnection.fll","FLL"))
lcurl = "FTP://" + tcuser+ ":" + tcpass + "@" + tchost + "/" + tcficheros_bajada_2     &&&& Funciona Bien

llbajado = FTPGet(lcurl, tcficheros_bajada_3  , "")
IF llbajado = .T.
llborrado = DeleteFtpFile("/" + tcficheros_bajada_2)
ELSE
llresultado = .F.
llrename_fichero = RenameFtpFile(tcficheros_bajada_2, tcficheros_bajada_1)  &&&Funciona bien  
IF llrename_fichero = .T.
lccomentario = "Renombrado FTP por no bajar " + tcficheros_bajada_2  + " por error en bajada."
va_por(lccomentario)
ELSE
lccomentario = "NO PUDO Renombrado FTP por no bajar " + tcficheros_bajada_2  + " por error en bajada."
va_por(lccomentario)
endif
endif
endif
SET LIBRARY TO 
RETURN llresultado 
ENDFUNC

Perdón por la extensión.

Muchas gracias por todo.

Kike - Sevilla
España.

Luiz Alexandre Ruiz

unread,
Oct 19, 2016, 9:15:32 AM10/19/16
to Comunidad de Visual Foxpro en Español
Olá, pelo que eu entendi, você dispara a rotina mais de uma vez, se sim, você está abrindo a conexão (OpenInternet), mas não está fechado, talvez fazendo isso resolva o seu problema.

:)

Kike. Sevilla

unread,
Oct 19, 2016, 1:54:52 PM10/19/16
to Comunidad de Visual Foxpro en Español
La rutina lo hace bien quién no lo hace es :

SET LIBRARY TO (LOCFILE(lcraiz+ "ftp\vfpconnection.fll","FLL"))
lcurl = "FTP://" + tcuser+ ":" + tcpass + "@" + tchost + "/" + tcficheros_bajada_2     &&&& Funciona Bien

llbajado = FTPGet(lcurl, tcficheros_bajada_3  , "")

Por eso estoy buscando si alguien ha usado los comandos de FTP_servide para ver los documentos que hay y bajarlos.
Las que no consiguo que funcionen son:

GetFtpDirectoryArray(lcdir, lcmask)
 GetFtpFile(lcRemoteFile, lcNewFile, llFailIfExists)

Gracias por la ayuda.

Kike - Sevilla.
España.

Allan Raúl Acuña

unread,
Oct 19, 2016, 2:11:50 PM10/19/16
to Comunidad de Visual Foxpro en Español

Estimado Kike, adjunto te mando el ftp_service


Con su ayuda en txt, podras revisar su funcionabilidad, esta es una clase maravillosa. La tengo en uso y sin usar otra solucion. 


Saludos cordiales.

Lic. Allan Ra??l Acu??a
Analista Programador
msn= allan...@hotmail.com
skype= NicEasySoft
            +(505) 8 999 8950
Managua, Nicaragua
Centroam??rica

De: publice...@googlegroups.com <publice...@googlegroups.com> en nombre de Kike. Sevilla <enriquecarm...@gmail.com>
Enviado: miércoles, 19 de octubre de 2016 03:20:01 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] FTP_Service
 
ftp_class.zip
Reply all
Reply to author
Forward
0 new messages