FoxPro/Visual FoxPro - Error en FTP

   
Vista:

Error en FTP

Publicado por Jaume (6 intervenciones) el 16/08/2009 05:04:20
Hola, estoy probando el siguiente código para FTP que encontré en un post anterior. Continuamente a pesar de haber intentado configurar todo lo posible me da el error "Unknow member FTP" y corresponde a cada una de las lineas del "thisform.ftp...".
¿Alguien sabe lo que estoy haciendo mal o me falta?.

O si alguien tiene un programa para subir archivos que esté probado.

--------------------------------------------------
Parameters cArch
*Wait Window "Conectando con el Servidor" Nowait
lcPaso = "ftp://user:password@servidorFTP" && parametros usuario, clave y dirección
lcrutafuen = "c:"
lcrutadest = "/"
lcArchivo = "prueba.txt"
Wait Window "enviando "+Alltrim(lcArchivo)+" " Nowait
Thisform.ftp.EXECUTE(lcPaso,"put "+lcrutafuen+Alltrim(lcArchivo)+" "+Alltrim(lcrutadest)+"/"+Alltrim(lcArchivo)+"") && Agrega el archivo
Do While Thisform.ftp.stillexecuting=.T.
Loop && espera para que termine
Enddo

Thisform.ftp.EXECUTE(lcPaso,"quit") && salir
Wait Window "Cerrando conexión" Nowait
Do While Thisform.ftp.stillexecuting=.T.
Loop && espera
Enddo
Thisform.ftp.EXECUTE(lcPaso,"close") && cerrar conexion
Wait Window "Saliendo de la conexion" Nowait
Do While Thisform.ftp.stillexecuting=.T.
Loop
Enddo
--------------------------------------------

Gracias a todos por vuestra ayuda. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en FTP

Publicado por Pablo (Argentina) (433 intervenciones) el 17/08/2009 16:13:36
Hola Jaume, mira no se bien que es lo que queres hacer con tu aplicacion si es probar por probar o estas en un proyecto con ftp.
Aca te paso un codigo que esta probado y funciona,lo saque de portalfox.com y mas abajo te paso otro link relacionado con todo lo de ftp y http si te interesa

Esto nos permite, mediante un Servidor FTP, subir los archivos que sean necesarios.

**
** Como subir un archivo a una página Web con VFP.
**

#DEFINE GENERIC_READ 2147483648 && &H80000000
#DEFINE GENERIC_WRITE 1073741824 && &H40000000

PUBLIC hOpen, hFtpSession
DECLARE INTEGER InternetOpen IN wininet.dll;
STRING sAgent,;
INTEGER lAccessType,;
STRING sProxyName,;
STRING sProxyBypass,;
STRING lFlags

DECLARE INTEGER InternetCloseHandle IN wininet.dll;
INTEGER hInet

DECLARE INTEGER InternetConnect IN wininet.dll;
INTEGER hInternetSession,;
STRING sServerName,;
INTEGER nServerPort,;
STRING sUsername,;
STRING sPassword,;
INTEGER lService,;
INTEGER lFlags,;
INTEGER lContext

DECLARE INTEGER FtpOpenFile IN wininet.dll;
INTEGER hFtpSession,;
STRING sFileName,;
INTEGER lAccess,;
INTEGER lFlags,;
INTEGER lContext

DECLARE INTEGER InternetWriteFile IN wininet.dll;
INTEGER hFile,;
STRING @ sBuffer,;
INTEGER lNumBytesToWrite,;
INTEGER @ dwNumberOfBytesWritten

** Seleccionamos el servidor FTP, con un nivel de acceso apropiado.
** No usar un acceso anónimo.
IF connect2ftp ("fpt.???.???", "Usuario", "Password")
lcSourcePath = "C:Temp" && Directorio local
lcTargetPath = "archivos/" && directorio de ftp destino
lnFiles = ADIR (arr, lcSourcePath + "*.htm")

FOR lnCnt=1 TO lnFiles
lcSource = lcSourcePath + LOWER (arr [lnCnt, 1])
lcTarget = lcTargetPath + LOWER (arr [lnCnt, 1])
? lcSource + " -> " + lcTarget
?? local2ftp (hFtpSession, lcSource, lcTarget)
ENDFOR

= InternetCloseHandle (hFtpSession)
= InternetCloseHandle (hOpen)
ENDIF

**--------------------------------------------
** Establecemos la conexión
**--------------------------------------------
FUNCTION connect2ftp (strHost, strUser, strPwd)
** Abrimos el acceso.
hOpen = InternetOpen ("vfp", 1, 0, 0, 0)

IF hOpen = 0
? "No tiene acceso a WinInet.Dll"
RETURN .F.
ENDIF

** Conectando al FTP.
hFtpSession = InternetConnect (hOpen, strHost, 0, strUser, strPwd, 1, 0, 0)

IF hFtpSession = 0
** Cerrando acceso y saliendo.
= InternetCloseHandle (hOpen)
? "FTP " + strHost + " no está disponible"
RETURN .F.
ELSE
? "Conectado a " + strHost + " como: [" + strUser + ", *****]"
ENDIF
RETURN .T.

**--------------------------------------------
** Copia del/los archivos
**--------------------------------------------
FUNCTION local2ftp (hConnect, lcSource, lcTarget)
** Copiando el archivo local al directorio remoto ftp.
hSource = FOPEN (lcSource)
IF (hSource = -1)
RETURN -1
ENDIF

** Creamos el nuevo archivo
hTarget = FtpOpenFile(hConnect, lcTarget, GENERIC_WRITE, 2, 0)
IF hTarget = 0
= FCLOSE (hSource)
RETURN -2
ENDIF
lnBytesWritten = 0
lnChunkSize = 256 && 128, 512
DO WHILE Not FEOF(hSource)
lcBuffer = FREAD (hSource, lnChunkSize)
lnLength = Len(lcBuffer)
IF lnLength > 0
IF InternetWriteFile (hTarget, @lcBuffer, lnLength, @lnLength) = 1
lnBytesWritten = lnBytesWritten + lnLength
** Podemos mostrar aquí el progreso de la operación
ELSE
EXIT
ENDIF
ELSE
EXIT
ENDIF
ENDDO

= InternetCloseHandle (hTarget)
= FCLOSE (hSource)

RETURN lnBytesWritten

el link para mas info es

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=161

Suerte!!!!!!

Pablo - Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en FTP

Publicado por Jaume (6 intervenciones) el 21/08/2009 03:52:22
Hola Pablo, muchas gracias por la información.
El motivo de necesitar un FTP es simplemente que en unas aplicaciones que tengo en Fox y que trabaja con vistas remotas de un servidor web, necesito subir unas fotografias.

Sólo que tengo el problema que en tu codigo me da el siguiente error:
"Metods and events cannot containt nested procedures or class definitions".

He probado y cambiado multitud de parametros y configuraciones pero sigue sin funcionar.

¿Tienes alguna pista?.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en FTP

Publicado por mvilchez (6 intervenciones) el 07/02/2010 14:41:20
estoy en las mismas, alguien tiene alguna ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar