基于微软自带的CInternetSession和CFtpConnection类库实现ftp的上传和下载demo

可登陆浏览器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;
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值