• C++ Operate FTP


    //
     //*********************************************************
     //Ftp basic operation
     //*********************************************************
     //
     //
     //1. connect to ftp
     //
     BOOL flag;
     CString   cstrFtpServer   = TEXT("10.142.252.155"); //ftp server address
     CString   cstrFtpUserName = TEXT("pdmug");          //user name
     CString   cstrFtpPassword = TEXT("pdmuguser");      //password
     CInternetSession* m_pInternetSession = NULL;
     CFtpConnection* m_pFtpConnection = NULL;
     
     try
     {
         m_pInternetSession = new CInternetSession();
         m_pFtpConnection = m_pInternetSession->GetFtpConnection(cstrFtpServer, 
                                cstrFtpUserName, cstrFtpPassword, 21);  //21 --- ftp port
     }
     catch (CInternetException* pEx)    //error:can not connect to specific ftp
     {
         if (m_pInternetSession != NULL)
         {
             delete m_pInternetSession;
         }
         if (m_pFtpConnection != NULL)
         {
             delete m_pFtpConnection;
         }
        
         return;
     }
     
     //
     //2. get current directory
     //
     CString cstrCurrDir;
     flag = m_pFtpConnection->GetCurrentDirectory(cstrCurrDir);
     if (!flag)  //get current directory error
     {
     }
     
     //
     //3. set current directory
     //
     CString cstrNewCurrDir = TEXT("//pdmpv/GOX/BACK_COVER/");
     flag = m_pFtpConnection->SetCurrentDirectory(cstrNewCurrDir);
     if (!flag)  //set current directory error
     {
     }
     
     //
     //4. download file from ftp
     //
     flag = m_pFtpConnection->GetFile(TEXT("CA110900_2ND_MD.ol"), 
                                      TEXT("D:\\123.ol"),
                                      TRUE);
     if (!flag)  //download file fail
     {
     }
     
     //
     //5. upload file to ftp
     //
     flag = m_pFtpConnection->PutFile(TEXT("D:\\123.txt"), TEXT("456.txt"));
     if (!flag)  //upload file fail
     {
     }
     
     //
     //6. rename file on ftp
     //
     flag = m_pFtpConnection->Rename(TEXT("456.txt"), TEXT("456_wy.txt"));
     if (!flag)  //rename file fail
     {
     }
     
     //
     //7. remove file on ftp
     //
     flag = m_pFtpConnection->Remove(TEXT("456.txt"));
     if (!flag)  //remove file fail
     {
     }
     
     //
     //8. create directory on ftp
     //
     flag = m_pFtpConnection->CreateDirectory(TEXT("WangYao"));
     if (!flag)  //create directory on ftp fail
     {
     }
     
     //
     //9. remove directory on ftp
     //Note: directory must be empty or will cause error
     //
     flag = m_pFtpConnection->RemoveDirectory(TEXT("WangYao"));
     if (!flag)  //remove directory on ftp fail
     {
     }
     
     //
     //10. Do not forget to free resource
     //
     delete m_pInternetSession;
     delete m_pFtpConnection;
     
     
     //
     //*********************************************************
     //Ftp file finder
     //*********************************************************
     //
     //
     //1. 如上:connect to ftp
     //
     
     //
     //2. 如上:set current directory
     //
     
     //
     //3. find file(参考CFileFind)
     //
     CFtpFileFind fFinder(m_pFtpConnection);
     BOOL bFind = fFinder.FindFile(TEXT("*.*"));
     while (bFind)
     {
         bFind = fFinder.FindNextFile();
     
         //当前文件夹及上层文件夹(名称分别为.和..)-----------------
         if (fFinder.IsDots()) 
         {
             continue;
         }
     
         //子文件夹---------------------------------------------
         if(fFinder.IsDirectory()) 
         {
             CString cstrDirName = fFinder.GetFileName();  //directory name
             CString cstrDirPath = fFinder.GetFilePath();  //directory path
             continue;
         }
     
         //文件-------------------------------------------------
         CString cstrFileName = fFinder.GetFileName();   //file name
         CString cstrFilePath = fFinder.GetFilePath();   //file path
     }
     
     fFinder.Close();


  • 相关阅读:
    自己封装的json工具类
    使用BigDecimal进行精确计算工具类
    keytool的使用
    自己封装的数字证书签名及签名验证方法,附带生成证书的语句
    用jxl导出数据到excel
    用jxl解析excel内容
    html的<marquee></marquee>标签实现滚动效果
    request、response 中文乱码问题与解决方式
    httpclient4.3.6/httpcore-4.4自己封装的工具类
    Tomcat优化总结
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887557.html
Copyright © 2020-2023  润新知