• MFC VC++ FTP创建文件夹,上传文件,下载文件


    1.从FTP下载文件代码 

    头文件 #include <afxinet.h>

     1 BOOL CMFCApplication1Dlg::getFileFromFTP(CString strFtpPath, CString strLocalPath)
     2 {
     3     CInternetSession *pInternetSession;
     4     CFtpConnection *pFtpConnection;
     5     pInternetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS);
     6     try
     7     {
     8         pFtpConnection = pInternetSession->GetFtpConnection
     9             (_T("127.0.0.1"),//FTP服务器IP
    10             _T("user"),//用户名
    11             _T("pwd"),//密码
    12             21,//FTP服务器端口号
    13             TRUE);
    14         if (pFtpConnection)
    15         {
    16             BOOL res = pFtpConnection->GetFile(strFtpPath, strLocalPath, FALSE);
    17             if (!res)
    18             {
    19                 return FALSE;
    20             }
    21 
    22             if (pFtpConnection)
    23             {
    24                 pFtpConnection->Close();
    25                 pFtpConnection = NULL;
    26             }
    27             if (pInternetSession)
    28             {
    29                 pInternetSession->Close();
    30                 pInternetSession = NULL;
    31             }
    32             return TRUE;
    33         }
    34         else
    35         {
    36             return FALSE;
    37         }
    38     }
    39     catch (CInternetException *pEx)
    40     {
    41         TCHAR szError[1024];
    42         if (pEx->GetErrorMessage(szError, 1024))
    43         {
    44             AfxMessageBox(szError);
    45         }
    46         pEx->Delete();
    47         pFtpConnection = NULL;
    48         if (pInternetSession)
    49         {
    50             pInternetSession->Close();
    51             pInternetSession = NULL;
    52         }
    53         return FALSE;
    54     }
    55 }

    调用下载文件函数

     1 void CMFCApplication1Dlg::OnBnClickedOk()
     2 {
     3     // TODO: 在此添加控件通知处理程序代码
     4     CString strFTPPathName = _T("FTP根目录\111\123.doc");
     5     CString strPathName = _T("E:\123.doc");
     6     BOOL res = getFileFromFTP(strFTPPathName, strPathName);
     7     if (res)
     8     {
     9         MessageBox(_T("下载成功"));
    10     }
    11     else
    12     {
    13         MessageBox(_T("下载失败"));
    14     }
    15 }

     2.在FTP上创建文件夹

     1 BOOL CMFCApplication1Dlg::CreateFolderToFtp(CString &strFtpPath)
     2 {
     3     //要这一个传入参数好像没啥用,创建的文件夹固定为skonda//SN//image  skonda文件夹已存在
     4     CInternetSession *pInternetSession;
     5     CFtpConnection *pFtpConnection;
     6     pInternetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS);
     7     try
     8     {
     9         pFtpConnection = pInternetSession->GetFtpConnection
    10             (_T("127.0.0.1"),//FTP服务器IP
    11             _T("user"),//用户名
    12             _T("pwd"),//密码
    13             21,//FTP服务器端口号
    14             TRUE);
    15         if (pFtpConnection)
    16         {
    17             CString strFtp1Path, strFtp2Path;
    18             strFtp1Path = _T("/1111");
    19             strFtp2Path = strFtp1Path + _T("/2222");
    20             BOOL ret = pFtpConnection->CreateDirectory(strFtp1Path);//不能创建多级目录
    21             if (!ret)
    22             {
    23                 MessageBox(_T("创建FTP文件夹失败"));
    24                 strFtpPath.Empty();
    25                 return FALSE;
    26             }
    27 
    28             ret = pFtpConnection->CreateDirectory(strFtp2Path);//不能创建多级目录
    29             if (!ret)
    30             {
    31                 MessageBox(_T("创建FTP文件夹失败"));
    32                 strFtpPath = strFtp1Path;
    33                 return FALSE;
    34             }
    35             if (pFtpConnection)
    36             {
    37                 pFtpConnection->Close();
    38                 pFtpConnection = NULL;
    39             }
    40             if (pInternetSession)
    41             {
    42                 pInternetSession->Close();
    43                 pInternetSession = NULL;
    44             }
    45             strFtpPath = strFtp2Path;
    46             return TRUE;
    47         }
    48         else
    49         {
    50             MessageBox(_T("FTP服务器连接失败"));
    51             strFtpPath.Empty();
    52             return FALSE;
    53         }
    54     }
    55     catch (CInternetException *pEx)
    56     {
    57         TCHAR szError[100];
    58         if (pEx->GetErrorMessage(szError, 100))
    59         {
    60             AfxMessageBox(szError);
    61         }
    62         pEx->Delete();
    63         pFtpConnection = NULL;
    64         if (pInternetSession)
    65         {
    66             pInternetSession->Close();
    67             pInternetSession = NULL;
    68         }
    69         return FALSE;
    70     }
    71 }

    调用代码

     1     CString strFtpPath;
     2     BOOL res = CreateFolderToFtp(strFtpPath);
     3     if (res)
     4     {
     5         CString strMsg;
     6         strMsg.Format(_T("%s 创建成功"), strFtpPath);
     7         MessageBox(strMsg);
     8     }
     9     else
    10     {
    11         MessageBox(_T("创建失败"));
    12     }

     3.向FTP上传文件

     1 BOOL CMFCApplication1Dlg::putFileToFtp(CString strFilePathName, CString strFileFtpPathName)
     2 {
     3     CInternetSession *pInternetSession;
     4     CFtpConnection *pFtpConnection;
     5     pInternetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS);
     6     try
     7     {
     8         pFtpConnection = pInternetSession->GetFtpConnection
     9             (_T("127.0.0.1"),//FTP服务器IP
    10             _T("user"),//用户名
    11             _T("pwd"),//密码
    12             21,//FTP服务器端口号
    13             TRUE);
    14         if (pFtpConnection)
    15         {
    16             BOOL bPut = pFtpConnection->PutFile(strFilePathName, strFileFtpPathName);
    17             if (!bPut)
    18             {
    19                 MessageBox(_T("上传失败"));
    20                 return FALSE;
    21             }
    22             if (pFtpConnection)
    23             {
    24                 pFtpConnection->Close();
    25                 pFtpConnection = NULL;
    26             }
    27             if (pInternetSession)
    28             {
    29                 pInternetSession->Close();
    30                 pInternetSession = NULL;
    31             }
    32             return TRUE;
    33         }
    34         else
    35         {
    36             MessageBox(_T("FTP服务器连接失败"));
    37             return FALSE;
    38         }
    39     }
    40     catch (CInternetException *pEx)
    41     {
    42         TCHAR szError[100];
    43         if (pEx->GetErrorMessage(szError, 100))
    44         {
    45             AfxMessageBox(szError);
    46         }
    47         pEx->Delete();
    48         pFtpConnection = NULL;
    49         if (pInternetSession)
    50         {
    51             pInternetSession->Close();
    52             pInternetSession = NULL;
    53         }
    54         return FALSE;
    55     }
    56 }

    调用代码

     1     CString strFilePathName = _T("E:\123.ini");
     2     CString sttFileFtpPathName = _T("1111\2222\qqq.ini");
     3     BOOL res = putFileToFtp(strFilePathName, sttFileFtpPathName);
     4     if (res)
     5     {
     6         MessageBox(_T("上传成功"));
     7     }
     8     else
     9     {
    10         MessageBox(_T("上传失败"));
    11     }
  • 相关阅读:
    最常被程序员们谎称读过的计算机书籍
    天气城市代码,市级城市. 用java的map.中国天气网.
    你所知道的学习方法,都是错的!
    解决「问题」,不要解决问题
    [IOS 下重温设计模式] AbstractFactory
    判断UIView是否装载完成
    va_start、va_end、va_list的使用
    [IOS 下重温设计模式] Singleton
    IOS BLOCK收集
    SEL
  • 原文地址:https://www.cnblogs.com/ckrgd/p/14135390.html
Copyright © 2020-2023  润新知