/************************************************************************/ /*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 ; }
时间: 2025-01-07 10:50:47