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.
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.
España.