本文讲解怎样利用MFC对FTP进行读写操作。
//
//*********************************************************
//Ftp basic operation
//*********************************************************
//
//
//1. connect to ftp
//
BOOL flag;
CString cstrFtpServer = TEXT("10.142.252.155"); //ftp server address
CString cstrFtpUserName = TEXT("pdmug"); //user name
CString cstrFtpPassword = TEXT("pdmuguser"); //password
CInternetSession* m_pInternetSession = NULL;
CFtpConnection* m_pFtpConnection = NULL;
try
{
m_pInternetSession = new CInternetSession();
m_pFtpConnection = m_pInternetSession->GetFtpConnection(cstrFtpServer,
cstrFtpUserName, cstrFtpPassword, 21); //21 --- ftp port
}
catch (CInternetException* pEx) //error:can not connect to specific ftp
{
if (m_pInternetSession != NULL)
{
delete m_pInternetSession;
}
if (m_pFtpConnection != NULL)
{
delete m_pFtpConnection;
}
return;
}
//
//2. get current directory
//
CString cstrCurrDir;
flag = m_pFtpConnection->GetCurrentDirectory(cstrCurrDir);
if (!flag) //get current directory error
{
}
//
//3. set current directory
//
CString cstrNewCurrDir = TEXT("//pdmpv/GOX/BACK_COVER/");
flag = m_pFtpConnection->SetCurrentDirectory(cstrNewCurrDir);
if (!flag) //set current directory error
{
}
//
//4. download file from ftp
//
flag = m_pFtpConnection->GetFile(TEXT("CA110900_2ND_MD.ol"),
TEXT("D:\\123.ol"),
TRUE);
if (!flag) //download file fail
{
}
//
//5. upload file to ftp
//
flag = m_pFtpConnection->PutFile(TEXT("D:\\123.txt"), TEXT("456.txt"));
if (!flag) //upload file fail
{
}
//
//6. rename file on ftp
//
flag = m_pFtpConnection->Rename(TEXT("456.txt"), TEXT("456_wy.txt"));
if (!flag) //rename file fail
{
}
//
//7. remove file on ftp
//
flag = m_pFtpConnection->Remove(TEXT("456.txt"));
if (!flag) //remove file fail
{
}
//
//8. create directory on ftp
//
flag = m_pFtpConnection->CreateDirectory(TEXT("WangYao"));
if (!flag) //create directory on ftp fail
{
}
//
//9. remove directory on ftp
//Note: directory must be empty or will cause error
//
flag = m_pFtpConnection->RemoveDirectory(TEXT("WangYao"));
if (!flag) //remove directory on ftp fail
{
}
//
//10. Do not forget to free resource
//
delete m_pInternetSession;
delete m_pFtpConnection;
//
//*********************************************************
//Ftp file finder
//*********************************************************
//
//
//1. 如上:connect to ftp
//
//
//2. 如上:set current directory
//
//
//3. find file(参考CFileFind)
//
CFtpFileFind fFinder(m_pFtpConnection);
BOOL bFind = fFinder.FindFile(TEXT("*.*"));
while (bFind)
{
bFind = fFinder.FindNextFile();
//当前文件夹及上层文件夹(名称分别为.和..)-----------------
if (fFinder.IsDots())
{
continue;
}
//子文件夹---------------------------------------------
if(fFinder.IsDirectory())
{
CString cstrDirName = fFinder.GetFileName(); //directory name
CString cstrDirPath = fFinder.GetFilePath(); //directory path
continue;
}
//文件-------------------------------------------------
CString cstrFileName = fFinder.GetFileName(); //file name
CString cstrFilePath = fFinder.GetFilePath(); //file path
}
fFinder.Close();