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.

Descarga de FTP atributos del fichero

Foro público de Xailer en español
Juan Jose
Mensajes: 72
Registrado: Lun Jun 09, 2008 3:43 pm

Descarga de FTP atributos del fichero

Mensaje por Juan Jose »

Hola
Alguien sabe como puedo adaptar estaa funcion para
la clas de Jose Lalin-Componente para subir y bajar archivos de un FTP
lo e intentado sin exito lo que necesito es coger del remoto los atributos
de un fichero
gracias.
#pragma BEGINDUMP
#include <windows.h>
#include <wininet.h>
#include <xailer.h>
//---------------------------------------------------------- ----------------
HB_FUNC_STATIC( XFTPFile_DIRECTORY )
{
PHB_ITEM Self = hb_stackSelfItem();
HINTERNET hRemote = (HINTERNET) XA_ObjGetNL( Self, "hRemote" );
char * szMask = hb_parc( 1 );
WIN32_FIND_DATA wfd;
HINTERNET hFile;
PHB_ITEM pArray = hb_itemArrayNew( 0 );
memset( &wfd, 0, sizeof( WIN32_FIND_DATA ) );
hFile = FtpFindFirstFile( hRemote, szMask, &wfd, INTERNET_FLAG_RELOAD |
INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_HYPERLINK |
INTERNET_FLAG_NEED_FILE | INTERNET_FLAG_RESYNCHRONIZE, 0 );
//hFile = FtpFindFirstFile( hSession, szMask, &wfd, 0, 0 );
if( hFile != NULL )
{
BOOL bNext = TRUE;
while( bNext )
{
PHB_ITEM pSub = hb_itemArrayNew( 0 );
PHB_ITEM pItem = hb_itemNew( NULL );
PHB_ITEM pAttr = hb_itemNew( NULL );
FILETIME lft;
SYSTEMTIME st;
char * szAttr = "....";
hb_arrayAdd( pSub, hb_itemPutC( pItem, wfd.cFileName ) );
hb_arrayAdd( pSub, hb_itemPutNL( pItem, ( wfd.nFileSizeHigh *
MAXDWORD ) + wfd.nFileSizeLow ) );
szAttr[ 0 ] = wfd.dwFileAttributes & FILE_ATTRIBUTE_NORMAL ? 'A' :
' ';
szAttr[ 1 ] = wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? 'D'
: ' ';
szAttr[ 2 ] = wfd.dwFileAttributes & FILE_ATTRIBUTE_READONLY ? 'R'
: ' ';
szAttr[ 3 ] = wfd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN ? 'H' :
' ';
hb_itemPutC( pAttr, szAttr );
if( FileTimeToLocalFileTime( &wfd.ftLastWriteTime, &lft ) &&
FileTimeToSystemTime( &lft, &st ) )
{
char szTime[ 8 ];
sprintf( szTime, "%02d:%02d:%02d", st.wHour, st.wMinute,
st.wSecond );
hb_arrayAdd( pSub, hb_itemPutD( pItem, st.wYear, st.wMonth,
st.wDay ) );
hb_arrayAdd( pSub, hb_itemPutC( pItem, szTime ) );
}
else
{
hb_arrayAdd( pSub, hb_itemPutD( pItem, 0, 0, 0 ) );
hb_arrayAdd( pSub, hb_itemPutC( pItem, "" ) );
}
hb_arrayAdd( pSub, pAttr );
hb_arrayAdd( pArray, pSub );
hb_itemRelease( pAttr );
hb_itemRelease( pItem );
hb_itemRelease( pSub );
ProcessMessages();
bNext = InternetFindNextFile( hFile, &wfd );
}
InternetCloseHandle( hFile );
}
hb_itemReturnForward( pArray );
hb_itemRelease( pArray );
}
#pragma ENDDUMP
Responder