343上位机VC MFC遍历遍历FTP服务器文件
343上位机VC MFC遍历遍历FTP服务器文件功能展示
在涉及FTP相关项目编程时,遍历FTP服务器内全部文件是很有必要的,我们当前例程变实现FTP服务器内的全部文件,效果如图,点击<登录>按钮,例程会登录事先准备好的FTP服务器,并浏览服务器内的全部内容罗列到树状控件中。例程中的服务器信息是使用主机屋的免费服务器用于测试用
要点提示
例程主要通过类CFtpFileFind来获取FTP服务器文件目录,首先是创建一个CInternetSession类,通过此类的GetFtpConnection()函数获得CFtpConnection的实例指针,这样就可以通过这个指针创建CFtpFileFind类的实例了; CFtpFileFind类提供多个实用函数实现文件的不同操作,例程使用 FindFile() 及FindNextFile()实现FTP服务器内文件的遍历功能
实现功能
1.新建基于对话框的应用程序
2.依照例程界面添加四编辑框IDC_FTPSERVER, IDC_FTPPORT, IDC_FTPUSER, IDC_FTPPASS,分别对应FTP服务器,端口,用户名称,密码,再添加一树状控件用于服务器文件的显示,最后添加一按钮<登录>关联点击函数
void CGkbc8Dlg::OnLogin()
{
CString sServer;
GetDlgItemText(IDC_FTPSERVER,sServer);
CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREEINFO);
pTree->DeleteAllItems();
HTREEITEM hRoot = pTree->InsertItem(sServer,0,0);
ListDir("\\Web\\",hRoot);//为主机屋测试用服务器
}
4.上面函数中调用了一自定义函数ListDir(),所以再添加这自定义的函数
void CGkbc8Dlg:istDir(CString sDirectory, HTREEITEM hParent)
{
CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREEINFO);
CString sServer,sPort,sUser,sPass;
GetDlgItemText(IDC_FTPSERVER,sServer);
GetDlgItemText(IDC_FTPPORT,sPort);
GetDlgItemText(IDC_FTPUSER,sUser);
GetDlgItemText(IDC_FTPPASS,sPass);
//><
CInternetSession session;
CFtpConnection* pTemp = session.GetFtpConnection(sServer,sUser,sPass,atoi(sPort));
CFtpFileFind Find(pTemp);
HTREEITEM hItem = hParent;
HTREEITEM hSubItem;
BOOL ret ;
if (sDirectory.IsEmpty())
ret = Find.FindFile(NULL,INTERNET_FLAG_EXISTING_CONNECT);
else
ret = Find.FindFile(sDirectory,INTERNET_FLAG_EXISTING_CONNECT);
CString filename ;
if (ret)
{
while (Find.FindNextFile())
{
filename = Find.GetFileName();
hSubItem = pTree->InsertItem(filename,0,0, hParent);
if (Find.IsDirectory())
{
ListDir(sDirectory+"\\"+filename,hSubItem);
}
}
if (!Find.IsDirectory())
{
filename = Find.GetFileName();
pTree->InsertItem(filename,0,0,hItem);
}
else
{
ListDir(sDirectory+"\\"+filename,hItem);
}
}
Find.Close();
delete pTemp;
}
5.最后中添加上面网络类的头文件#include <afxinet.h>
我们来演示下功能实现的整个过程FTP服务器文件
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|