Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
LuisPonce wrote:Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
LuisPonce wrote:Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
... If lConectaFTP( AMPAARRA )
oTdbfREbFAC:Gotop()
While oTdbfREbFAC:Locate( , , lRest ) .and. ValType( AMPAARRA[1][1][1] ) = "O"
lRest := .T.
oTdbfREbFAC:Load()
msgnowait2( AMPAARRA, "Copiant PDF anònim a FTP del rebut: " + allTrim(Str( oTdbfRebFac:Numerebu, 12, 0)) + " -Ok: " + allTrim(Str(nOk,5,0)) + " -Errors: " + allTrim(Str(nErrores, 5,0)), "Cancel·lar..." + Str( nContador --, 5,0) )
Traza( 1, "FTP-oTdbfRebFac:Numerebu:", oTdbfRebFac:Numerebu)
//If RebutToFTP( AMPAARRA, oTdbfRebFac:Numerebu, .F. )
If SubeFichero( AMPAARRA, cPathREBUT( AMPAARRA, .T. ) + Base10to36(oTdbfRebFac:numeRebu) + ".pdf", .F. )
nOk ++
oTdbfREbFAC:Dataaweb := DToS( Date() ) + " " + Time()
oTdbfREbFAC:Save()
Else
nErrores ++
GenError( 3, GetTrad("Error al copiar el rebut:" ) + Str( oTdbfRebFac:Numerebu, 10, 0 ) + "-" + Base10to36(oTdbfRebFac:numeRebu) + ".pdf")
//AADD( aFTPError, oTdbfRebFac:Numerebu)
Traza2( cFileLog, CRLF + DToS( Date() ) + "_" + Left(StrTran( Time(), ":" ), 6) + "-" + GetTrad("Error al copiar el rebut:" ) + Str( oTdbfRebFac:Numerebu, 10, 0 ) + "-" + Base10to36(oTdbfRebFac:numeRebu) + ".pdf")
EndIf
SysRefresh()
End
CierraFTP()
EndIf...
/*----------------------------------------------------------------------------------------*/
* Basado en el siguiente trabajo: *
* =============================== *
/*----------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------*/
* *
* Archivo: Proc9991.PRG *
* Descripcion: Subir ficheros del servidor FTP *
* Fecha: 11-03-2012 *
* Autor: Jose Javier LLoris Roig *
* Web: http://javierlloris.blogspot.com.es/ *
* Msn: fwh-jll@hotmail.es *
* *
* Libreria: FWH/FWHX 11.09 *
* Harbour: Harbour 5.8.2 release 20120330 *
* Compilador: Borland C++ 5.8.2 *
* S.O: XP/Win7 no probado en otros S.O *
* *
* Copyright (C) 2012 José Javier Lloris Roig *
* Correo electrónico: fwh-jll@hotmail.es *
* Web: http://javierlloris.blogspot.com.es/ *
* *
* Este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los *
* términos de la Licencia Pública General GNU publicada por la Fundación para el *
* Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier *
* versión posterior. *
* *
* Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA *
* ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO *
* DETERMINADO. *
* *
* Consulte los detalles de la Licencia Pública General GNU para obtener una información*
* más detallada. *
* *
* Debería haber recibido una copia de la Licencia Pública General GNU *
* junto a este programa. En caso contrario, consulte http://www.gnu.org/licenses. *
/*----------------------------------------------------------------------------------------*/
#Include "FiveWin.CH"
STATIC oFTP
STATIC lFTP := .F.
STATIC aFiles
STATIC nSizeFiles
/*------------------------------------------------------------------------------*/
FUNCTION oGetoFTP()
Return oFTP
/*------------------------------------------------------------------------------*/
FUNCTION lIsOpenFTP()
Return lFTP
/*------------------------------------------------------------------------------*/
Function CierraFTP()
Traza( 1, "CierraFTP()" )
If lIsOpenFTP()
oFTP:Close()
EndIf
DeleteObject( oFTP )
oFTP := NIL
lFTP := .F.
Return Nil
/*------------------------------------------------------------------------------*/
Function lConectaFTP( AMPAARRA )
/*------------------------------------------------------------------------------*/
Local lOk := .F.
Local cPasswordFTP := RTrim( AMPAarra[2][3][1][19] ) + Space(25)
// comprobamos si tenemos conexion a internet
IF !IsInternet()
MsgAlert( "Compruebe la conexión a Internet.", "Atención" )
Return (lFTP := .F.)
END
aFiles := {}
nSizeFiles := 0
/* Comprobamos que en la BD Ftp.DBF estan los datos introducidos para poder */
/* acceder al servidor FTP */
IF EMPTY( AMPAarra[2][3][1][17] ) .OR.; // Nombre del servidor FTP
EMPTY( AMPAarra[2][3][1][18] ) .OR.; // Nombre del usuario FTP
EMPTY( AMPAarra[2][3][1][19] ) .OR.; // Password del usuario del FTP
EMPTY( AMPAarra[2][3][1][20] ) // Nombre de la carpeta destino en el servidor FTP
MsgAlert( "Debe de configurar el programa para poder" +CRLF+;
"acceder al servidor FTP. Entre en el apartado" +CRLF+;
"Configurar programa y introduzca la información"+CRLF+;
"requerida y vuelva a intentarlo." +CRLF+CRLF+;
"Pulse el boton de aceptar para continuar.", "ERROR!!" )
Return (lFTP := .F.)
END
MsgGet( GetTrad("Atenció!"), RTrim( AMPAarra[2][3][1][17] ) + "-" + RTrim( AMPAarra[2][3][1][18] ) + "-" + GetTrad("Indiqui el Password:"), @cPasswordFTP )
Traza( 1, "RTrim( AMPAarra[2][3][1][17] )=", RTrim( AMPAarra[2][3][1][17] ) )
Traza( 1, "RTrim( AMPAarra[2][3][1][18] )=", RTrim( AMPAarra[2][3][1][18] ) )
Traza( 1, "cPasswordFTP=", cPasswordFTP )
Traza( 1, "AMPAarra[2][3][1][20]=", AMPAarra[2][3][1][20] )
Traza( 1, "AMPAarra[2][3][1][21]=", AMPAarra[2][3][1][21] )
Traza( 1, "AMPAarra[2][3][1][22]=", AMPAarra[2][3][1][22] )
Traza( 1, "AMPAarra[2][3][1][23]=", AMPAarra[2][3][1][23] )
MsgRun( "Conectando con el servidor FTP",;
"Espere por Favor..." ,;
{ || oFtp := ServicesFTP():New( RTrim( AMPAarra[2][3][1][17] ) ,; // Servidor
RTrim( AMPAarra[2][3][1][18] ) ,; // Usuario
AllTrim(cPasswordFTP) , ; // RTrim( AMPAarra[2][3][1][19] ) ,; // Contraseña
AMPAarra[2][3][1][21] ,; // Permitir anonimos
AMPAarra[2][3][1][22] ,; // Tiempo de respuesta
AMPAarra[2][3][1][23] )}) // Puerto
SysRefresh()
IF (lOk := (oFtp:nError == 0))
Traza( 1, "a-oFtp:GetPath()=", oFtp:GetPath() )
/* Aqueta funció és molt important per que a més a més de carregar
fitxers en la array 'aFiles', es situa en el directori de FPT.
------------------------------------------------------------ */
CargaFiles( RTrim( AMPAarra[2][3][1][20] ) )
Traza( 1, "Connectat!!!" )
Traza( 1, "b-oFtp:GetPath()=", oFtp:GetPath() )
END
Traza( 1, "oFtp:nError:", oFtp:nError )
Traza( 1, "lOk=", lOk )
Return ( lFTP := lOk )
/*------------------------------------------------------------------------------*/
Function SubeFichero( AMPAARRA, cFile, lMensaje )
/*------------------------------------------------------------------------------*/
/* Esta función puede usarse sola (directamente), con lo cual en ella se
realiza la conexión a FTP, o precedida del uso de lConectaFTP() y poscedida de
CierraFTP(), y en ese caso no se realizará la conexión a FTP en esta función ya que
se habrá realizado previamente en lConectaFTP().
Para controlar esta situación se usa la variable lConectadoFTPenSubefichero .
-------------------------------------------------------------------------------- */
Local lConectadoFTPenSubefichero := .F.
LOCAL cFilePut := ""
LOCAL cDirBack := ""
LOCAL lSubido := .F.
Traza( 1, "lFTP=", lFTP)
Traza( 1, "cFile=", cFile )
Traza( 1, "ValType(oFTP)=", ValType(oFTP) )
//If .Not. lFTP
If .Not. lIsOpenFTP()
If .Not. lConectaFTP( AMPAARRA )
Return .F.
EndIf
lConectadoFTPenSubefichero := .T.
EndIf
cDirBack := oFtp:GetPath()
oFtp:oFtp:Cwd( oFtp:GetPath() )
Traza( 1, "oFtp:oFtp:Cwd( oFtp:GetPath() )" )
IF !Empty( cFile )
/* Buscamos si ya existe el fichero en el servidor ftp */
IF AScan( aFiles, { | aFile | Lower( aFile[1] ) == Lower( cFileNoPath( cFile ) ) } ) > 0
IF MsgNoYes( "Archivo: " + Lower( cFileNoPath( cFile ) ) + CRLF + CRLF + ;
"El fichero ya existe en su sitio FTP." + CRLF + CRLF + ;
"¿ Desea reemplazarlo ? ", "Seleccione..." )
/* Borramos el fichero */
IF !oFtp:oFtp:Dele( RTrim( cFileNoPath( cFile ) ) )
MsgAlert( "Archivo: " + RTrim( Lower( cFileNoPath( cFile ) ) ) + CRLF + CRLF + ;
"No se ha podido eliminar el archivo." + CRLF + CRLF + ;
"Pulse el boton Aceptar para continuar.", "ERROR!!" )
If lConectadoFTPenSubefichero
Traza( 1, "No es pot esborrar." )
CierraFTP()
Endif
Return( lSubido )
END
ELSE
If lConectadoFTPenSubefichero
Traza( 1, "No es còpia i es tanca." )
CierraFTP()
Endif
Return( lSubido )
END
END
END
MsgRun( "Subiendo el archivo: " + Lower( RTrim( cFileNoPath( cFile ) ) ) ,;
"Servidor Ftp: " + RTrim( AMPAarra[2][3][1][17]) + " Usuario: " + RTrim( AMPAarra[2][3][1][18] ),;
{ || cFilePut := oFtp:oFtp:MPut( cFile, oFtp:GetPath() )})
SysRefresh()
Traza( 1, "cFilePut=", cFilePut)
IF Empty( cFilePut )
lSubido := .F.
If lMensaje
MsgAlert( "Archivo: " + Lower( cFileNoPath( cFile ) ) + CRLF + CRLF + ;
"El archivo no se ha podido subir a su sitio FTP. Consulte"+ CRLF + ;
"con su administrador de sistemas o ISP los permisos" + CRLF + ;
"de escritura de su sitio FTP." + CRLF + CRLF + ;
"Pulse el boton Aceptar para continuar.", "ERROR!!" )
EndIf
ELSE
lSubido := .T.
If lMensaje
MsgInfo( "Ruta de acceso remoto predeterminado: " + oFtp:GetPath() + CRLF + ;
"Archivo: " + Lower( cFileNoPath( cFile ) ) + CRLF + CRLF + ;
"El archivo se ha subido correctamente a su sitio FTP." + CRLF + CRLF + ;
"Pulse el boton Aceptar para continuar." )
EndIf
END
If lConectadoFTPenSubefichero
Traza( 1, "Al final" )
CierraFTP()
Endif
If lsubido
Else
Inkey(1)
EndIf
Return( lSubido )
/*------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------*/
STATIC Function CargaFiles( cPath )
/*------------------------------------------------------------------------------*/
DEFAULT cPath := "/"
aFiles := oFtp:ScrollDir( If( cPath == "/", "/", ( RTrim( cPath ) + "/" ) ) )
nSizeFiles := oFtp:nSizeFiles
Return NIL
LuisPonce wrote:Buenos dias
Gracias Carlos G. por las respuestas, creo que tengo una luz al final del tunel, encontre una libreria...
Una consulta mas:
si quisiera subir el archivo cFile:="elfile.pdf" a la carpeta "\PDFS_SELF" (fuera de la public_html) de mi servidor fpt, cual es la sintaxis que debo aplicar para indicarle a que carpeta deseo llevar el cFile ?¿
Gracias
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 64 guests