Buenas, alguien tiene un ejemplo de FTPFile ? .... porque el enlace en el blog de xailer, donde está el fuente para ver los metodos disponibles está roto.
Gracias,
Antonio.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
FTPFile
-
- Mensajes: 6
- Registrado: Lun Sep 04, 2017 6:14 pm
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: FTPFile
Buenos días,
Es muy probable que el siguiente código no funcione más que con Xailer 4 o posterior.
Un saludo
Nota: Los métodos incluidos tienen la gran ventaja de que muestran el progreso de la operación.
Es muy probable que el siguiente código no funcione más que con Xailer 4 o posterior.
Un saludo
Nota: Los métodos incluidos tienen la gran ventaja de que muestran el progreso de la operación.
Código: Seleccionar todo
WITH OBJECT ::oFtp := TFtp():Create( Self )
:cUser := ::oEdUser:cText
:cPassword := ::oEdClave:cText
:lPassive := .T.
IF !:Open() .OR. !:Connect( ::oEdServer:cText )
MsgInfo( "No se pudo conectar con el servidor FTP, proceso abortado" )
:Close()
RETURN .f.
ENDIF
END WITH
Código: Seleccionar todo
METHOD FTPSendFile( cSrcFile, cTrgFile ) CLASS TFrmCopiasSeg
LOCAL cBuffer
LOCAL nSize, nLen
LOCAL hSrcFile, hTrgFile
LOCAL lExito
IF ::oFtp == NIL
MsgInfo( "Conexión FTP no preparada" )
RETURN .F.
ENDIF
cBuffer := Space( BUFFER_FTP )
nSize := FileSize( cSrcFile )
nLen := BUFFER_FTP
hTrgFile := ::oFtp:OpenFileWrite( cTrgFile )
lExito := .T.
IF hTrgFile <= 0
MsgInfo( "Error de apertura de fichero remoto: " + cTrgFile )
RETURN .F.
ENDIF
hSrcFile := FOpen( cSrcFile, 0 )
WITH OBJECT ::oPgBar
:nMax := Int( nSize / BUFFER_FTP )
:nValue := 0
END WITH
::lWorking := .T.
WITH OBJECT ::oFtp
DO WHILE nLen == BUFFER_FTP
nLen := FRead( hSrcFile, @cBuffer, BUFFER_FTP )
IF ::lStop
MsgInfo( "Proceso cancelado por el usuario" )
lExito := .f.
::lStop := .f.
EXIT
ENDIF
IF nLen > 0 .AND. !:WriteFile( hTrgFile, cBuffer, nLen )
MsgInfo( "Error de comunicaciones. Fichero no grabado correctamente." )
lExito := .f.
EXIT
ENDIF
::oPgBar:nValue ++
ProcessMessages()
ENDDO
:CloseFile( hTrgFile )
END WITH
FClose( hSrcFile )
::lWorking := .F.
IF !lExito
::oPgBar:nValue := 0
ENDIF
RETURN lExito
Código: Seleccionar todo
METHOD FTPReceiveFile( cSrcFile, cTrgFile ) CLASS TFrmCopiasSeg
LOCAL cBuffer
LOCAL nSize, nLen
LOCAL hSrcFile, hTrgFile
LOCAL lExito
IF ::oFtp == NIL
MsgInfo( "Conexión FTP no preparada" )
RETURN .F.
ENDIF
cBuffer := Space( BUFFER_FTP )
hSrcFile := ::oFtp:OpenFileRead( cSrcFile )
lExito := .T.
IF hSrcFile <= 0
MsgInfo( "Error de apertura de fichero remoto: " + cSrcFile )
RETURN .F.
ENDIF
FErase( cTrgFile )
nSize := ::oFtp:GetFileSize( hSrcFile )
nLen := BUFFER_FTP
hTrgFile := FCreate( cTrgFile, 0 )
WITH OBJECT ::oPgBar
:nMax := Int( nSize / BUFFER_FTP )
:nValue := 0
END WITH
::lWorking := .T.
WITH OBJECT ::oFtp
DO WHILE nLen == BUFFER_FTP
IF ::lStop
MsgInfo( "Proceso cancelado por el usuario" )
lExito := .f.
::lStop := .f.
EXIT
ENDIF
IF nSize <= 0
EXIT
ENDIF
IF !:ReadFile( hSrcFile, @cBuffer, @nLen )
MsgInfo( "Error de comunicaciones. Fichero no recuperado correctamente." )
lExito := .f.
EXIT
ENDIF
nSize -= nLen
IF nLen > 0 .and. FWrite( hTrgFile, cBuffer, nLen ) != nLen
MsgInfo( "Error de escritura en fichero local. Fichero no recuperado correctamente." )
lExito := .f.
EXIT
ENDIF
::oPgBar:nValue ++
ProcessMessages()
ENDDO
:CloseFile( hSrcFile )
END WITH
FClose( hTrgFile )
::lWorking := .F.
IF !lExito
::oPgBar:nValue := 0
ENDIF
RETURN lExito
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 6
- Registrado: Lun Sep 04, 2017 6:14 pm
Re: FTPFile
Gracias Ignacio, era lo que necesitaba.
Saludos.
Saludos.