Lo que hace es realizar una copia de respaldo comprimida de los datos de la app y poner dicho archivo en un ftp en internet.
luego hace el proceso inverso. baja el archivo de respaldo y lo descomprime al directorio de datos.
NOta: logicamente deberan poner:
su servidor ftp.
su usuario
su clave
ademas de que las funciones waiton y waitoff no estan incluidas
pero son facilmente reemplazable
salu2
carlos vargas
- Code: Select all Expand view RUN
PROCEDURE GetFileInFtp()
LOCAL oFpt
oFTP := qFTPClient():New("209.190.5.162", 21, {|cM| Logfile("logftp.txt", {cM})},,"carlos@carlos.byethost6.com","carlos")
oFTP:lPassive := .T.
IF oFTP:Connect()
MsgInfo("Conectado a " + CRLF + oFTP:oSocket:ClientIP() )
WaitOn("Conectado, Recuperando datos")
CursorWait()
IF oFTP:Retr("/datos.zip","datos.zip")
CursorArrow()
WaitOff()
IF FileSize("datos.zip") > 0
IF UnZipDatos()
MsgInfo("Archivo de datos restaurado correctamente!")
ENDIF
ELSE
MsgAlert("Archivo de datos corrupto, no se pude continuar!")
ENDIF
ELSE
CursorArrow()
WaitOff()
MsgAlert("Fallo recuperación de archivos de datos!")
ENDIF
ELSE
MsgAlert("Fallo en conexión a servidor FTP!")
ENDIF
oFTP:Quit()
oFTP:End()
RETURN
/*----------------------------------------------------------------------------------*/
PROCEDURE PutFileInFtp()
LOCAL oFpt
IF !ZipDatos()
RETURN
ENDIF
oFTP := qFTPClient():New("209.190.5.162", 21, {|cM| Logfile("logftp.txt", {cM})},,"carlos@carlos.byethost6.com","carlos")
oFTP:lPassive := .T.
IF oFTP:Connect()
MsgInfo("Conectado a " + CRLF + oFTP:oSocket:ClientIP() )
WaitOn("Conectado, copiando datos.")
CursorWait()
IF oFTP:Stor("datos.zip", "/datos.zip")
CursorArrow()
WaitOff()
MsgInfo("Archivo de datos almacenado con exito!")
ELSE
CursorArrow()
WaitOff()
MsgAlert("Fallo almacenamiento de archivos de datos!")
ENDIF
ELSE
MsgAlert("Fallo en conexión a servidor FTP!")
ENDIF
oFTP:Quit()
oFTP:End()
RETURN
/*----------------------------------------------------------------------------------*/
FUNCTION ZipDatos()
LOCAL lOk:=FALSE
LOCAL aFiles:={}
AAdd(aFiles,".\datos\mcont.dbf")
AAdd(aFiles,".\datos\mdesl.dbf")
AAdd(aFiles,".\datos\mjard.dbf")
AAdd(aFiles,".\datos\mlote.dbf")
AAdd(aFiles,".\datos\mvend.dbf")
AAdd(aFiles,".\datos\mcont.cdx")
AAdd(aFiles,".\datos\mdesl.cdx")
AAdd(aFiles,".\datos\mjard.cdx")
AAdd(aFiles,".\datos\mlote.cdx")
AAdd(aFiles,".\datos\mvend.cdx")
AAdd(aFiles,".\datos\mcont.fpt")
AAdd(aFiles,".\datos\mlote.fpt")
AAdd(aFiles,".\datos\mvend.fpt")
WaitOn("Comprimiendo datos.")
CursorWait()
IF HB_ZIPFILE("datos.zip",aFiles,9,NIL,TRUE,NIL,TRUE)
CursorArrow()
WaitOff()
lOk:=TRUE
ELSE
CursorArrow()
WaitOff()
MsgStop("Error, no se pudo comprimir datos!")
ENDIF
RETURN lOk
/*----------------------------------------------------------------------------------*/
FUNCTION UnZipDatos()
LOCAL lOk:=FALSE
LOCAL aFiles:=HB_GETFILESINZIP("datos.zip")
WaitOn("Descomprimiendo datos.")
CursorWait()
IF Len(aFiles) > 0
IF HB_UNZIPFILE("datos.zip",NIL,TRUE,NIL,".\",aFiles)
CursorArrow()
WaitOff()
lOk:=TRUE
ELSE
CursorArrow()
WaitOff()
MsgAlert("Error, no se pudo descomprimir datos!")
ENDIF
ELSE
CursorArrow()
MsgAlert("Archivo de respaldo corrupto!")
ENDIF
RETURN lOk
/*----------------------------------------------------------------------------------*/