int FromServer ( char * _pCharReadDirServer, char * _pCharWriteDirLocal)
{
if ( pObjFtpConn == 0 )
return 0;
pObjFtpConn->SetCurrentDirectory( _pCharReadDirServer );
CFtpFileFind finder( pObjFtpConn );
BOOL bHaveFile = finder.FindFile();
while ( bHaveFile )
{
bHaveFile = finder.FindNextFile();
CFile objFile;
CString strLocation(_pCharWriteDirLocal);
strLocation.Append( finder.GetFileName() );
if ( !objFile.Open( strLocation, CFile::modeCreate | CFile::modeWrite ) )
return 0;
CInternetFile * pObjInternetFile;
/***************************** 这里出错 **********************************/
// read
try {
pObjInternetFile = pObjFtpConn->OpenFile( finder.GetFileName(), GENERIC_READ );
}
catch ( CInternetException e )
{return 0;}
/**************************************************************************/
char * pCharBuff = new char[1024];
int nBuffLng = pObjInternetFile->Read( pCharBuff, 1024 );
while ( nBuffLng )
{
// write to local file
objFile.Write( pCharBuff, nBuffLng );
nBuffLng = pObjInternetFile->Read( pCharBuff, 1024 );
}
pObjInternetFile->Close();
delete pObjInternetFile;
//delete
pObjFtpConn->Remove( finder.GetFileName() );
objFile.Close();
delete pCharBuff;
}
finder.Close();
return 1;
}
自己用---OpenFile
本文介绍了一个FTP文件同步程序的实现过程,包括目录切换、文件查找、读取及写入操作等关键步骤。通过C++代码展示了如何从远程服务器下载文件到本地。

被折叠的 条评论
为什么被折叠?



