现在的位置: 首页 > 综合 > 正文

FTP操作代码示例

2012年04月28日 ⁄ 综合 ⁄ 共 3077字 ⁄ 字号 评论关闭

在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();

抱歉!评论已关闭.