码迷,mamicode.com
首页 > 编程语言 > 详细

MFC实现指定文件夹或文件的下载

时间:2015-11-11 11:31:08      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

/************************************************************************/
/*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 ;
}

  

MFC实现指定文件夹或文件的下载

标签:

原文地址:http://www.cnblogs.com/gardenintheair/p/4955368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!