Descarga de FTP atributos del fichero
Publicado: Mié Jun 24, 2009 3:33 am
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
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