Hora y Fecha de un fichero en FTP

Hora y Fecha de un fichero en FTP

Postby softruz » Mon Apr 14, 2008 11:33 am

Muy buenas, tengo problemas a la hora de recoger la fecha y hora de un fichero en un servidor ftp mediante esta funcion.

method ReadFiles( cMask ) class CDIftp

local hFTPDir, aFiles := {}
local oWin32FindData, cBuffer

DEFAULT cMask := "*.*"

STRUCT oWin32FindData
MEMBER nFileAttributes AS DWORD
MEMBER nCreationTime AS STRING LEN 9
MEMBER nLastReadAccess AS STRING LEN 8
MEMBER nLastWriteAccess AS STRING LEN 8
MEMBER nSizeHight AS DWORD
MEMBER nSizeLow AS DWORD
MEMBER nReserved0 AS DWORD
MEMBER nReserved1 AS DWORD
MEMBER cFileName AS STRING LEN 260
MEMBER cAltName AS STRING LEN 14
ENDSTRUCT

if ::oFTP != nil
cBuffer = oWin32FindData:cBuffer
hFTPDir = FtpFindFirstFile( ::oFTP, cMask, @cBuffer, 0, 0 )
oWin32FindData:cBuffer = cBuffer
if ! Empty( oWin32FindData:cFileName )
AAdd( aFiles, { oWin32FindData:cFileName,;
oWin32FindData:nSizeLow,;
oWin32FindData:nLastWriteAccess,;
oWin32FindData:nCreationTime,;
oWin32FindData:nFileAttributes} )
while InternetFindNextFile( hFTPDir, @cBuffer )
oWin32FindData:cBuffer = cBuffer
AAdd( aFiles, { oWin32FindData:cFileName,;
oWin32FindData:nSizeLow,;
oWin32FindData:nLastWriteAccess,;
oWin32FindData:nCreationTime,;
oWin32FindData:nFileAttributes } )
end
end if
InternetCloseHandle( hFTPDir )
end if

return aFiles

Lo que me sucede es que los datos
oWin32FindData:nLastWriteAccess,;
oWin32FindData:nCreationTime,;
están vacios y en el servidor ftp el archivo tiene hora y fecha.

¿Sabeis como puedo conseguir estos datos?

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Postby JmGarcia » Mon Apr 14, 2008 6:37 pm

Yo las fechas, horas y tamaños los recojo con el RemoteShell y comandos de Unix (mi servidor FTP es Unix)

Code: Select all  Expand view  RUN
function main()
local cTexto,oRemoteShell:=CreateObject("WScript.Shell")
cTexto:="cmd /C rsh 999.999.999.999 -l usuario -n ls -al /mascara > dir.txt"
/// 999.999.999.999 es la IP del servidor FTP
oRemoteShell:Run(cTexto,0,.F.)
oRemoteShell:=nil
// En el fichero dir.txt tienes todo
return nil


El fichero DIR.TXT lo tratas con StrToken y separas las columnas.

El fichero DIR.TXT tiene algo asi:
Code: Select all  Expand view  RUN
drwxr-xr-x 14 0        0        4096  May  2 04:41 .
drwxr-xr-x 14 0        0        4096  May  2 04:41 ..
drw-r--r--  2 0        0        4096  May  2 05:05 Share
drw-r--r-- 27 0        0        12288  May  2 03:22 WEB
-rw-r--r--  1 0        0        1512  Mar 30 14:59 .ftpd.conf
drw-r--r--  2 0        0        4096  May  2 01:00 invitado
drw-r--r--  7 0        0        4096  Jan  4 2007  TDT
drw-r--r--  6 0        0        4096  May  1 19:02 Software
drw-r--r--  4 0        0        4096  May  1 22:14 Fotos
-rw-r--r--  1 0        0        2865239  Jan  4 2007  ntx_chset.h
-rw-r--r--  1 0        0        822  Mar 30 2008  md5sum.txt.asc
-rw-r--r--  1 0        0        658  Mar 30 2008  sha1sum.txt
-rw-r--r--  1 0        0        894  Mar 30 2008  sha1sum.txt.asc
etc, etc, etc...


A cada línea le aplicas StrToken, asi:
StrToken(cLinea,5," ") ---> Tamaño
StrToken(cLinea,6," ") ---> Mes
StrToken(cLinea,7," ") ---> Día
StrToken(cLinea,8," ") ---> Año
StrToken(cLinea,9," ") ---> Nombre
etc, etc, etc...
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

rE:

Postby softruz » Tue Apr 15, 2008 10:41 am

Muchas gracias por la contestación, entonces si lo haces con comandos de unix como podríamos coger la version del fichero.exe.

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Postby Antonio Linares » Tue Apr 15, 2008 10:48 am

Revisa fwh\samples\FtpDir.prg
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

rE:

Postby softruz » Tue Apr 15, 2008 11:34 am

He revisado TFTP pero dicha clase no nos proporciona la version, por eso digo que con un comando de unix lo mismo si.



Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Postby Antonio Linares » Tue Apr 15, 2008 12:30 pm

El método Directory() proporciona la misma información que la función Directory() de Clipper. Solo tienes que revisar la fecha y la hora.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Tue Apr 15, 2008 12:32 pm

AEval( aFiles, { | aFile | MsgInfo( aFile[ 1 ], aFile[ 3 ] ) } )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re:

Postby softruz » Thu Apr 17, 2008 9:54 am

Gracias Antonio, pero sigo sin conseguir la Version del Fichero, ¿Como se podría hacer?

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re:

Postby softruz » Thu Apr 17, 2008 10:02 am

JmGarcia, tengo una duda sobre el comando que has expuesto antes, lo he utilizado pero en dir.txt no me introduce ninguna informacion, ¿me podrias decir que parametros tengo que introducir para que me funcione?

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Antonio Linares, Google [Bot] and 51 guests