sunyke 发表于 2015-5-27 06:34:36

FTP操作代码示例

  在Windows编程,常涉及到操作FTP的需求。
  以下为个人总结的一些示例代码:



1 //
2 //*********************************************************
3 //Ftp basic operation
4 //*********************************************************
5 //
6 //
7 //1. connect to ftp
8 //
9 BOOL flag;
10 CString   cstrFtpServer   = TEXT("10.142.252.155"); //ftp server address
11 CString   cstrFtpUserName = TEXT("pdmug");          //user name
12 CString   cstrFtpPassword = TEXT("pdmuguser");      //password
13 CInternetSession* m_pInternetSession = NULL;
14 CFtpConnection* m_pFtpConnection = NULL;
15
16 try
17 {
18   m_pInternetSession = new CInternetSession();
19   m_pFtpConnection = m_pInternetSession->GetFtpConnection(cstrFtpServer,
20                            cstrFtpUserName, cstrFtpPassword, 21);//21 --- ftp port
21 }
22 catch (CInternetException* pEx)    //error:can not connect to specific ftp
23 {
24   if (m_pInternetSession != NULL)
25   {
26         delete m_pInternetSession;
27   }
28   if (m_pFtpConnection != NULL)
29   {
30         delete m_pFtpConnection;
31   }
32   
33   return;
34 }
35
36 //
37 //2. get current directory
38 //
39 CString cstrCurrDir;
40 flag = m_pFtpConnection->GetCurrentDirectory(cstrCurrDir);
41 if (!flag)//get current directory error
42 {
43 }
44
45 //
46 //3. set current directory
47 //
48 CString cstrNewCurrDir = TEXT("//pdmpv/GOX/BACK_COVER/");
49 flag = m_pFtpConnection->SetCurrentDirectory(cstrNewCurrDir);
50 if (!flag)//set current directory error
51 {
52 }
53
54 //
55 //4. download file from ftp
56 //
57 flag = m_pFtpConnection->GetFile(TEXT("CA110900_2ND_MD.ol"),
58                                  TEXT("D:\\123.ol"),
59                                  TRUE);
60 if (!flag)//download file fail
61 {
62 }
63
64 //
65 //5. upload file to ftp
66 //
67 flag = m_pFtpConnection->PutFile(TEXT("D:\\123.txt"), TEXT("456.txt"));
68 if (!flag)//upload file fail
69 {
70 }
71
72 //
73 //6. rename file on ftp
74 //
75 flag = m_pFtpConnection->Rename(TEXT("456.txt"), TEXT("456_wy.txt"));
76 if (!flag)//rename file fail
77 {
78 }
79
80 //
81 //7. remove file on ftp
82 //
83 flag = m_pFtpConnection->Remove(TEXT("456.txt"));
84 if (!flag)//remove file fail
85 {
86 }
87
88 //
89 //8. create directory on ftp
90 //
91 flag = m_pFtpConnection->CreateDirectory(TEXT("WangYao"));
92 if (!flag)//create directory on ftp fail
93 {
94 }
95
96 //
97 //9. remove directory on ftp
98 //Note: directory must be empty or will cause error
99 //
100 flag = m_pFtpConnection->RemoveDirectory(TEXT("WangYao"));
101 if (!flag)//remove directory on ftp fail
102 {
103 }
104
105 //
106 //10. Do not forget to free resource
107 //
108 delete m_pInternetSession;
109 delete m_pFtpConnection;
110
111
112 //
113 //*********************************************************
114 //Ftp file finder
115 //*********************************************************
116 //
117 //
118 //1. 如上:connect to ftp
119 //
120
121 //
122 //2. 如上:set current directory
123 //
124
125 //
126 //3. find file(参考CFileFind)
127 //
128 CFtpFileFind fFinder(m_pFtpConnection);
129 BOOL bFind = fFinder.FindFile(TEXT("*.*"));
130 while (bFind)
131 {
132   bFind = fFinder.FindNextFile();
133
134   //当前文件夹及上层文件夹(名称分别为.和..)-----------------
135   if (fFinder.IsDots())
136   {
137         continue;
138   }
139
140   //子文件夹---------------------------------------------
141   if(fFinder.IsDirectory())
142   {
143         CString cstrDirName = fFinder.GetFileName();//directory name
144         CString cstrDirPath = fFinder.GetFilePath();//directory path
145         continue;
146   }
147
148   //文件-------------------------------------------------
149   CString cstrFileName = fFinder.GetFileName();   //file name
150   CString cstrFilePath = fFinder.GetFilePath();   //file path
151 }
152
153 fFinder.Close();
  
页: [1]
查看完整版本: FTP操作代码示例