VC文件上传和下载(FTP实现)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC实现文件上传下载(FTP)
//连接ftp服务器
void CMyFtpDlg::OnConnect()
{
UpdateData(TRUE);
//新建对话
m_pInetSession=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_AC CESS);
try
{
//新建连接对象
m_pFtpConnection=m_pInetSession-> GetFtpConnection(m_strServer,m_strUserName,
m_strPassword);
}
catch(CInternetException *pEx)
{
//获取错误
TCHAR szError[1024];
if(pEx-> GetErrorMessage(szError,1024))
AfxMessageBox(szError);
else
AfxMessageBox( "There was an exception ");
pEx-> Delete();
m_pFtpConnection=NULL;
return;
}
m_pRemoteFinder = new CFtpFileFind(m_pFtpConnection);
//获得服务器根目录的所有文件并在列表框中显示
BrowseDir( " ",&m_ctrlRemoteFiles,m_pRemoteFinder,&m_arrRemoteFiles);
}
//下载单个文件
void CMyFtpDlg::DownFile(FILEITEM fileItem)
{
if(fileItem.bDir == TRUE)
{
AfxMessageBox( "本程序暂时不支持下载整个文件夹,请选择文件下载");
}
else
{
//格式化文件名
CString strLocalFile,strRemoteFile;
strRemoteFile.Format( "%s\\%s ",m_pRemoteFinder-> GetRoot(),fileItem.strFileName); strLocalFile.Format( "%s\\%s ",m_LocalFinder.GetRoot(),fileItem.strFileName);
//下载
if(m_pFtpConnection-> GetFile(strLocalFile,strLocalFile))
{
CString strMsg;
strMsg.Format( "下载文件%s成功! ",fileItem.strFileName);
AfxMessageBox(strMsg);
}
}
}
//上传单个文件
void CMyFtpDlg::UpFile(FILEITEM fileItem)
{
if(fileItem.bDir == TRUE)
{
AfxMessageBox( "本程序暂时不支持上载整个文件夹,请选择文件上载");
}
else
{
//格式化文件名
CString strLocalFile,strRemoteFile;
strRemoteFile.Format( "%s\\%s ",m_pRemoteFinder-> GetRoot(),fileItem.strFileName); strLocalFile.Format( "%s\\%s ",m_LocalFinder.GetRoot(),fileItem.strFileName);
//上传
if(m_pFtpConnection-> PutFile(strLocalFile,strLocalFile))
{
CString strMsg;
strMsg.Format( "上载文件%s成功! ",fileItem.strFileName);
AfxMessageBox(strMsg);
}
}
}。