可登陆浏览器ftp://***.***.***.***查看文件目录
无现成ftp服务器的可以自己建立一个,方法自行百度
亲测可用,环境为vs2010,新建一个空项目后,添加如下主程序文件
ftp_demp.cpp代码如下:
#include <iostream>
#include <afxinet.h>
#include <stdio.h>
#include <afx.h>
#include <afxwin.h>
using namespace std;
int main(int argc, char **argv)
{
CWinApp app((LPCTSTR)argv[0]);
app.InitApplication();
AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);
CFtpConnection* m_pFtpConnection=NULL;
CInternetSession* m_pInternetSession = NULL;
m_pInternetSession = new CInternetSession(NULL,1,PRE_CONFIG_INTERNET_ACCESS); //没有CWinAPP这三行,此处会报错
try
{
//建立一个FTP连接并获取指向CFtpConnection对象的指针
//参数分别为FTP服务器ip地址,FTP用户名,密码,端口号
//可用浏览器登陆ftp://***.***.***.***,输入账号/密码边可查看ftp中的文件目录
m_pFtpConnection = m_pInternetSession->GetFtpConnection("127.20.1.101","username","pwd",21);
//以下可用来查找文件名是否存在
//CFtpFileFind finder(m_pFtpConnection);
//bool isExist = finder.FindFile("test.txt");
//下载文件
//第一个参数为远程ftp服务器请求下载的文件所在的路径,第二个参数为需下载到本地的目录
//第三个参数:当设置为ture时,如果本地已经存在相同文件名的文件,GetFile就返回false。当设置为false时,如果本地已存在相同文件名的文件,则覆盖替换本地文件
///第四个参数:FILE_ATTRIBUTE_NORMAL表示普通文件属性
//第五个参数:FTP_TRANSFER_TYPE_BINARY规定了在何种条件下发生转移
//第六个参数:1为文件检索上下文标识符
bool bDownload= m_pFtpConnection->GetFile( "/home/test.pdf" , "F:\\ftp\\test.pdf", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 1 );
if(bDownload) //下载成功弹出提示
{
MessageBox(NULL,"下载成功","提示",MB_OK);
}
//上传文件
//第一个参数为本地上传目录,第二个参数为上传到ftp服务器中的路径
bool bUpload = m_pFtpConnection->PutFile("F:\\ftp\\a.txt","/home/a.txt");
if(bUpload) //上传成功弹出提示
{
MessageBox(NULL,"上传成功","提示",MB_OK);
}
}
catch(CInternetException* lpEx)
{
lpEx->ReportError();//报告错误,如密码无效等
lpEx->Delete();
m_pInternetSession->Close();
delete m_pInternetSession;
return 0;
}
//关闭连接并释放资源
m_pFtpConnection->Close();
m_pInternetSession->Close();
delete m_pInternetSession;
printf("over\n");
//以下代码让程序暂停,不至于一闪而过
cin.clear();
cin.sync(); // cin.clear();cin.sync();清空缓存区
cin.get(); //键盘输入
return 1;
}