]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/protocol/ftp.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        protocol/ftp.h 
   3 // Purpose:     interface of wxFTP 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  10     Transfer modes used by wxFTP. 
  14     NONE
,       //!< not set by user explicitly. 
  22     wxFTP can be used to establish a connection to an FTP server and perform all the 
  23     usual operations. Please consult the RFC 959 (http://www.w3.org/Protocols/rfc959/) 
  24     for more details about the FTP protocol. 
  26     wxFTP can thus be used to create a (basic) FTP @b client. 
  28     To use a command which doesn't involve file transfer (i.e. directory oriented 
  29     commands) you just need to call a corresponding member function or use the 
  30     generic wxFTP::SendCommand() method. 
  31     However to actually transfer files you just get or give a stream to or from this 
  32     class and the actual data are read or written using the usual stream methods. 
  34     Example of using wxFTP for file downloading: 
  39         // if you don't use these lines anonymous login will be used 
  41         ftp.SetPassword("password"); 
  43         if ( !ftp.Connect("ftp.wxwidgets.org") ) 
  45             wxLogError("Couldn't connect"); 
  49         ftp.ChDir("/pub/2.8.9"); 
  50         wxInputStream *i = ftp.GetInputStream("wxWidgets-2.8.9.tar.bz2"); 
  53             wxLogError("Couldn't get the file"); 
  57             size_t size = in->GetSize(); 
  58             char *data = new char[size]; 
  59             if ( !in->Read(data, size) ) 
  61                 wxLogError("Read error: %d", ftp.GetError()); 
  65                 // file data is in the buffer 
  73         // gracefully close the connection to the server 
  77     To upload a file you would do (assuming the connection to the server was opened 
  81         wxOutputStream *out = ftp.GetOutputStream("filename"); 
  84             out->Write(...); // your data 
  94 class wxFTP 
: public wxProtocol
 
 103         Destructor will close the connection if connected. 
 110         @name Functions for managing the FTP connection 
 115         Aborts the download currently in process, returns @true if ok, @false 
 116         if an error occurred. 
 118     virtual bool Abort(); 
 121         Gracefully closes the connection with the server. 
 123     virtual bool Close(); 
 126         Send the specified @a command to the FTP server. @a ret specifies 
 129         @return @true if the command has been sent successfully, else @false. 
 131     bool CheckCommand(const wxString
& command
, char ret
); 
 134         Returns the last command result, i.e. the full server reply for the last command. 
 136     const wxString
& GetLastResult(); 
 139         Send the specified @a command to the FTP server and return the first 
 140         character of the return code. 
 142     char SendCommand(const wxString
& command
); 
 145         Sets the transfer mode to ASCII. It will be used for the next transfer. 
 150         Sets the transfer mode to binary. It will be used for the next transfer. 
 155         If @a pasv is @true, passive connection to the FTP server is used. 
 157         This is the default as it works with practically all firewalls. 
 158         If the server doesn't support passive mode, you may call this function 
 159         with @false as argument to use an active connection. 
 161     void SetPassive(bool pasv
); 
 164         Sets the password to be sent to the FTP server to be allowed to log in. 
 166     virtual void SetPassword(const wxString
& passwd
); 
 169         Sets the transfer mode to the specified one. It will be used for the next 
 172         If this function is never called, binary transfer mode is used by default. 
 174     bool SetTransferMode(TransferMode mode
); 
 177         Sets the user name to be sent to the FTP server to be allowed to log in. 
 179     virtual void SetUser(const wxString
& user
); 
 186         @name Filesystem commands 
 191         Change the current FTP working directory. 
 192         Returns @true if successful. 
 194     bool ChDir(const wxString
& dir
); 
 197         Create the specified directory in the current FTP working directory. 
 198         Returns @true if successful. 
 200     bool MkDir(const wxString
& dir
); 
 203         Returns the current FTP working directory. 
 208         Rename the specified @a src element to @e dst. Returns @true if successful. 
 210     bool Rename(const wxString
& src
, const wxString
& dst
); 
 213         Remove the specified directory from the current FTP working directory. 
 214         Returns @true if successful. 
 216     bool RmDir(const wxString
& dir
); 
 219         Delete the file specified by @e path. Returns @true if successful. 
 221     bool RmFile(const wxString
& path
); 
 224         Returns @true if the given remote file exists, @false otherwise. 
 226     bool FileExists(const wxString
& filename
); 
 229         The GetList() function is quite low-level. It returns the list of the files in 
 230         the current directory. The list can be filtered using the @a wildcard string. 
 232         If @a wildcard is empty (default), it will return all files in directory. 
 233         The form of the list can change from one peer system to another. For example, 
 234         for a UNIX peer system, it will look like this: 
 237         -r--r--r--   1 guilhem  lavaux      12738 Jan 16 20:17 cmndata.cpp 
 238         -r--r--r--   1 guilhem  lavaux      10866 Jan 24 16:41 config.cpp 
 239         -rw-rw-rw-   1 guilhem  lavaux      29967 Dec 21 19:17 cwlex_yy.c 
 240         -rw-rw-rw-   1 guilhem  lavaux      14342 Jan 22 19:51 cwy_tab.c 
 241         -r--r--r--   1 guilhem  lavaux      13890 Jan 29 19:18 date.cpp 
 242         -r--r--r--   1 guilhem  lavaux       3989 Feb  8 19:18 datstrm.cpp 
 245         But on Windows system, it will look like this: 
 248         winamp~1 exe    520196 02-25-1999  19:28  winamp204.exe 
 249             1 file(s)           520 196 bytes 
 252         @return @true if the file list was successfully retrieved, @false otherwise. 
 256     bool GetDirList(wxArrayString
& files
, 
 257                     const wxString
& wildcard 
= wxEmptyString
); 
 260         Returns the file size in bytes or -1 if the file doesn't exist or the size 
 261         couldn't be determined. 
 263         Notice that this size can be approximative size only and shouldn't be used 
 264         for allocating the buffer in which the remote file is copied, for example. 
 266     int GetFileSize(const wxString
& filename
); 
 269         This function returns the computer-parsable list of the files in the current 
 270         directory (optionally only of the files matching the @e wildcard, all files 
 273         This list always has the same format and contains one full (including the 
 274         directory path) file name per line. 
 276         @return @true if the file list was successfully retrieved, @false otherwise. 
 280     bool GetFilesList(wxArrayString
& files
, 
 281                       const wxString
& wildcard 
= wxEmptyString
); 
 287         @name Download and upload functions 
 292         Creates a new input stream on the specified path. 
 294         You can use all but the seek functionality of wxStreamBase. 
 295         wxStreamBase::Seek() isn't available on all streams. For example, HTTP or FTP 
 296         streams do not deal with it. Other functions like wxStreamBase::Tell() are 
 297         not available for this sort of stream, at present. 
 299         You will be notified when the EOF is reached by an error. 
 301         @return Returns @NULL if an error occurred (it could be a network failure 
 302                 or the fact that the file doesn't exist). 
 304     virtual wxInputStream
* GetInputStream(const wxString
& path
); 
 307         Initializes an output stream to the specified @a file. 
 309         The returned stream has all but the seek functionality of wxStreams. 
 310         When the user finishes writing data, he has to delete the stream to close it. 
 312         @return An initialized write-only stream. 
 313                 Returns @NULL if an error occurred (it could be a network failure 
 314                 or the fact that the file doesn't exist). 
 316     virtual wxOutputStream
* GetOutputStream(const wxString
& file
);