利用MFC的类库编写FTP程序 ------快速上手

转过来过几天我写的时候可以参考一下。



使用ftp手册描述
这个手册帮助你快速开始在你的应用程序用使用FTP,你可以:

a)连接一个ftp服务器,并且

b) 从服务器上上传或者下载文件实现


第一步


在你的头文件中添加以下表达式.

#include < afxinet.h >

第二步


在你的头文件中,添加以下变量
CFtpConnection *m_pFtpConnection;
CInternetSession m_Session;

第三步


在你初始化应用程序的时候(OnInitDialog or InitInstance functions),添加上下面几行
m_pFtpConnection = NULL;

try
{
//这里用你的用户名,密码连接到ftp服务器 ,其中usr是用户名,pwd是密码,ftpSite.com
// 是你想要连接的ftp服务器.
m_pFtpConnection = m_Session.GetFtpConnection("ftpSite.com","usr","pwd",
INTERNET_INVALID_PORT_NUMBER);
}
catch(CInternetException *pEx)
{
pEx->ReportError(MB_ICONEXCLAMATION);
m_pFtpConnection = NULL;
pEx->Delete();
}
return TRUE;

第四步


为了上传文件,添加上一下几行代码:-

CFileFind Finder;
CString strFileName;

// 这里c:\\Myfile.bmp 是你要上传的文件名称
// 文件没有必要是一个bmp图片,你可以根据需要上传任何图片
// CString strFileName 确保上传到服务器上的文件保持原来的名称,当然,你也可以改成任何其他的
// 名称

if(Finder.FindFile("C:\\Myfile.bmp")==TRUE)
{
Finder.FindNextFile();
strFileName = Finder.GetFileName();
Finder.Close();
}

BOOL bUploaded = m_pFtpConnection->PutFile("C:\\Myfile.bmp",strFileName,
FTP_TRANSFER_TYPE_BINARY,1);

AfxMessageBox("Uploaded Successfully");

第五步


添加以下几行代码,可以下载一个文件.

第一个参数表示服务器上的文件名称第二个参数表示你要存放在本地的路径.

m_pFtpConnection->GetFile("File.ext","C:\\File.ext",TRUE,
FILE_ATTRIBUTE_NORMAL,FTP_TRANSFER_TYPE_BINARY,1);

第六步


关闭连接
m_Session.Close();
m_pFtpConnection->Close();

if(m_pFtpConnection!=NULL)
delete m_pFtpConnection;

至此,一个简单的ftp客户端就实现了,更多的高级特性,
请参考MSDN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
例子: 调用方法,目前只用上传功能:     定义全局私有变量:  private clsFTP cf;    按钮事件:         private void btn_upFile_Click(object sender, EventArgs e)         {             lb_upload.Text = "正在上传文件,请等待...";              cf = new clsFTP(new Uri("http://www.cnblogs.com/zhangjun1130/admin/ftp://192.168.43.55/"), "temp", "temp");             string localFile = Application.StartupPath.ToString() + "http://www.cnblogs.com/zhangjun1130/admin/file://output//zt.rar";              cf.UploadProgressChanged+=new clsFTP.De_UploadProgressChanged(cf_UploadProgressChanged);              cf.UploadFileCompleted+=new clsFTP.De_UploadFileCompleted(cf_UploadFileCompleted);              cf.UploadFileAsync(localFile, true);  //调用异步传输,若有文件存在则覆盖。         }    事件捆绑,反映上传进度:         public void cf_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)         {             this.pgrBarFileUpload.Maximum = (int)e.TotalBytesToSend;             this.pgrBarFileUpload.Value =(int) e.BytesSent;             lb_upload.Text = string.Format("文件总大小:{0}k,已经上传: {1}k。", e.TotalBytesToSend/1024,e.BytesSent/1024);         }         public void cf_UploadFileCompleted(object sender, UploadFileCompletedEventArgs e)         {                         try             {                 lb_upload.Text = "无法连接到服务器,或者用户登陆失败!";                 lb_error.Text =e.Error.Message.ToString();             }             catch             {                 lb_upload.Text = "文件上传成功!";                 lb_error.Text = "";             }         } 点击连接:http:##www.cnblogs.com/zhangjun1130/archive/2010/03/24/1693932.html

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值