标签:
/************************************************************************/
/*FTP下载指定的文件夹或文件
参数说明:
FtpPath 要下载的ftp 目录或文件
localPath 保存到本地的目录
ftpAddress ftp地址
ftpSuser 登陆ftp的用户名
ftpPass 登陆ftp的密码
sErr 发生错误时,返回的错误信息*/
/************************************************************************/
BOOL GetFileFromFTP( CString FtpPath, CString LocalPath ,CString ftpAddress, CString ftpUser, CString ftpPass, CString &sErr )
{
CString sTemp ;
CString sLocalTemp ;
CString sTempFtpPath ;
CInternetSession pInternetCon(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);
CFtpConnection *pFtpCon ;
try
{
pFtpCon =pInternetCon.GetFtpConnection( ftpAddress, ftpUser, ftpPass, 21 );
if ( pFtpCon != NULL)
{
CFtpFileFind FtpFinder( pFtpCon ) ;
BOOL bWork = FtpFinder.FindFile( FtpPath );
while ( bWork )
{
bWork = FtpFinder.FindNextFile() ;
if ( FtpFinder.IsDots() )
continue;
if(FtpFinder.IsDirectory() )
{ //是目录
sTemp.Empty() ;
sTemp = FtpFinder.GetFileName() ;
sTempFtpPath.Empty() ;
sTempFtpPath = FtpPath;
sTempFtpPath += sTemp;
sTempFtpPath += "\\*.*" ;
sLocalTemp.Empty() ;
sLocalTemp = LocalPath + sTemp;
CFileStatus rStatus;
if( !( CFile::GetStatus( sLocalTemp, rStatus ) ) )
{//文件夹不存在, 创建之
if( !(CreateDirectory((LPCTSTR)sLocalTemp, NULL)) )
{//创建失败
DWORD dErr = GetLastError() ;
sErr.Format( _T("创建新目录失败: ERROR %d") ,dErr ) ;
return FALSE ;
}
}
GetFileFromFTP( sTempFtpPath, sLocalTemp, ftpAddress, ftpUser, ftpPass, sErr ) ;
}
else
{
sTemp.Empty() ;
sTemp = FtpFinder.GetFileName();
sLocalTemp.Empty() ;
sLocalTemp = LocalPath + "\\" + sTemp ;
sTemp.Empty() ;
sTemp = FtpFinder.GetFilePath();//
CFileStatus rStatus;
if( !( CFile::GetStatus( sLocalTemp, rStatus ) ) )
{//文件不存在,下载之
if( !( pFtpCon->GetFile( sTemp, sLocalTemp, true, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 1) ) )
{//下载失败
DWORD dErr = GetLastError() ;
sErr.Format( _T("下载失败: ERROR %d") ,dErr ) ;
return FALSE ;
}
}
}
}
FtpFinder.Close() ;
}
}
catch (CInternetException * pEx)
{
TCHAR szError[1024];
pEx->GetErrorMessage(szError,1024) ;
sErr.Format( _T("连接FTP失败:%s"), pEx ) ;
pEx->Delete();
pFtpCon=NULL;
return FALSE ;
}
return TRUE ;
}
标签:
原文地址:http://www.cnblogs.com/gardenintheair/p/4955368.html