1.为”上一级目录”按纽添加BN_CLICKED响应函数OnLastdirectory,代码如下:
//返回上一级目录
void CFtpDlg::OnLastdirectory()
{
static CString strCurrentDirectory; //声明为静态变量
m_pConnection->GetCurrentDirectory(strCurrentDirectory);
if (strCurrentDirectory == "/")
{
AfxMessageBox("已经是根目录了!",MB_OK | MB_ICONSTOP);
}
else
{
//调用函数GetLastDiretory,得到上一级目录名
GetLastDiretory(strCurrentDirectory);
//设置当前目录为上一级目录
m_pConnection->SetCurrentDirectory(strCurrentDirectory);
//对当前目录进行查询,更新ClistCtrl控件的内容
ListContent("*");
}
}
2.为CFtpDlg类添加一工具函数GetLastDiretory用于得到上一级目录的名称
//用于得到上一级目录的字符串表示
void CFtpDlg::GetLastDiretory(CString &str)
{
int LastIndex=0;//定义一个初始整形变量
for (int i=0; i<str.GetLength(); i++)//定义i取得当前地址字符串长度
{
if (str.GetAt(i)=='/')//追溯至数组的最后一个“/”
LastIndex = i;//得到当前的数值“i”
}
//删除最后一个’/’之后的字符串
str = str.Left(LastIndex);//自带的left()函数:返回参数前的所有字符串
if (LastIndex == 0)//当追溯的本身即为根目录
str="/";
}
5.4 模块四: FTP客户端部分功能的实现: (李明 负责)
5.4.1 下载函数OnDownLoad:
为”下载”按纽添加BN_CLICKED响应函数OnDownLoad,代码如下:
void CFtpDlg::OnDownload()
{
int i=m_FtpFile.GetNextItem(-1,LVNI_SELECTED);
//先判断是否已经选中文件
if (i==-1) //如果没有被选中
{ //弹出对话框提示没有选择文件
AfxMessageBox("没有选择文件!",MB_OK | MB_ICONQUESTION);
}
else
{
//如果选中了文件,则得到选择项的类型,判断是不是文件
CString strType=m_FtpFile.GetItemText(i,2);
if (strType!="<DIR>") //选择的是文件
{
CString strDestName; //下载后的文件名
CString strSourceName; //原文件名
//得到所要下载的文件名
strSourceName = m_FtpFile.GetItemText(i,0);
CFileDialog dlg(FALSE,"",strSourceName);
//弹出SAVE AS对话框
if (dlg.DoModal()==IDOK)
{
//获得下载文件在本地机上存储的路径和名称
strDestName=dlg.GetPathName();
//调用CFtpConnect类中的GetFile函数下载文件
if (m_pConnection->GetFile(strSourceName,strDestName))
AfxMessageBox("下载成功!",MB_OK|MB_ICONINFORMATION);
else
AfxMessageBox("下载失败!",MB_OK|MB_ICONSTOP);
}
}
else
{
//选择的是目录
AfxMessageBox("不能下载目录!\n请重选!",MB_OK|MB_ICONSTOP);
}
}
}
5.4.2 上传函数OnUpLoad:
为”上传”按纽添加BN_CLICKED响应函数OnUpload,代码如下:
void CFtpDlg::OnUpload()
{
//获得当前输入
CString strSourceName; //原文件名
CString strDestName;
CFileDialog dlg(TRUE,"","*.*");
if (dlg.DoModal()==IDOK)
{
//获得待上传的本地机文件路径和文件名
strSourceName = dlg.GetPathName();
strDestName = dlg.GetFileName();
//调用CFtpConnect类中的PutFile函数上传文件
if (m_pConnection->PutFile(strSourceName,strDestName))
AfxMessageBox("上传成功!",MB_OK|MB_ICONINFORMATION);
else
AfxMessageBox("上传失败!",MB_OK|MB_ICONSTOP);
}
//更新ClistCtrl的内容
OnQuary();
}
5.4.3 删除函数OnDelete:
为”删除”按纽添加BN_CLICKED响应函数OnDelete,代码如下:
//删除选择的文件
void CFtpDlg::OnDelete()
{
int i=m_FtpFile.GetNextItem(-1,LVNI_SELECTED);
if (i==-1)
{
AfxMessageBox("没有选择文件!",MB_OK | MB_ICONQUESTION);
}
else
{
CString strFileName;
strFileName = m_FtpFile.GetItemText(i,0);
if ("<DIR>"==m_FtpFile.GetItemText(i,2))
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页