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

转载于:https://my.oschina.net/laopiao/blog/106576

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package ftp; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.FileInputStream; import java.io.IOException; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; public class MainCtrl extends HttpServlet { private FtpClient ftpClient; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html; charset=UTF-8"); try { //连接ftp服务器 connectServer("10.10.1.2", "zz3z2008", "zz3z2008", "upftp"); //上传文件;并返回上传文件的信息 req.setAttribute("inf", upload(req.getParameter("file_name"))); } catch (Exception e) { System.out.println(e.toString()); req.setAttribute("inf", e.toString()); req.getRequestDispatcher("view_inf.jsp").forward(req, resp); return; } finally { if (ftpClient != null) { ftpClient.closeServer(); } } req.getRequestDispatcher("view_inf.jsp").forward(req, resp); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } //连接ftp服务器 private void connectServer(String server, String user, String password, String path) throws IOException { // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 ftpClient = new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); //path是ftp服务下主目录的子目录 if (path.length() != 0) ftpClient.cd(path); //用2进制上传 ftpClient.binary(); } //上传文件;并返回上传文件的信息 private String upload(String filename) throws Exception { TelnetOutputStream os = null; FileInputStream is = null; try { //"upftpfile"用ftp上传后的新文件名 //os = ftpClient.put("upftpfile"); os = ftpClient.put("MainCtrl.zip"); java.io.File file_in = new java.io.File(filename); if (file_in.length()==0) { return "上传文件为空!"; } is = new FileInputStream(file_in); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return "上传文件成功!"; } } 文件2:upftp.htm(前台操作页面)内容如下: <html><body> <form action="/ftp/testFtp" method="post"> <input name="file_name" size="38" type="text" value="C:\\java\\MainCtrl.zip" /> <input type="submit" /> </form> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值