1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 %% Purpose: wxFTP documentation
4 %% Author: Guilhem Lavaux, Vadim Zeitlin
8 %% Copyright: (c) wxWindows team
9 %% License: wxWindows license
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12 \section{\class{wxFTP
}}\label{wxftp
}
14 wxFTP can be used to establish a connection to an FTP server and perform all the
15 usual operations. Please consult the RFC
959 for more details about the FTP
18 To use a commands which doesn't involve file transfer (i.e. directory oriented
19 commands) you just need to call a corresponding member function or use the
20 generic
\helpref{SendCommand
}{wxftpsendcommand
} method. However to actually
21 transfer files you just get or give a stream to or from this class and the
22 actual data are read or written using the usual stream methods.
24 Example of using wxFTP for file downloading:
29 // if you don't use these lines anonymous login will be used
31 ftp.SetPassword("password");
33 if ( !ftp.Connect("ftp.wxwindows.org") )
35 wxLogError("Couldn't connect");
40 wxInputStream *in = ftp.GetInputStream("wxWindows-
4.2.0.tar.gz");
43 wxLogError("Coudln't get file");
47 size_t size = in->StreamSize();
48 char *data = new char
[size
];
49 if ( !in->Read(data, size) )
51 wxLogError("Read error");
55 // file data is in the buffer
64 To upload a file you would do (assuming the connection to the server was opened
68 wxOutputStream *out = ftp.GetOutputStream("filename");
71 out->Write(...); // your data
78 wxFTP defines constants corresponding to the two supported transfer modes:
88 \wxheading{Derived from
}
90 \helpref{wxProtocol
}{wxprotocol
}
92 \wxheading{Include files
}
98 \helpref{wxSocketBase
}{wxsocketbase
}
100 % ----------------------------------------------------------------------------
102 % ----------------------------------------------------------------------------
104 \latexignore{\rtfignore{\wxheading{Members
}}}
106 \membersection{wxFTP::wxFTP
}
108 \func{}{wxFTP
}{\void}
112 \membersection{wxFTP::
\destruct{wxFTP
}}
114 \func{}{\destruct{wxFTP
}}{\void}
116 Destructor will close the connection if connected.
118 \membersection{wxFTP::Abort
}\label{wxftpabort
}
120 \func{bool
}{Abort
}{\void}
122 Aborts the download currently in process, returns
{\tt true
} if ok,
{\tt false
}
125 \membersection{wxFTP::CheckCommand
}
127 \func{bool
}{CheckCommand
}{\param{const wxString\&
}{ command
},
\param{char
}{ret
}}
129 Send the specified
{\it command
} to the FTP server.
{\it ret
} specifies
132 \wxheading{Return value
}
134 true if the command has been sent successfully, else false.
136 \membersection{wxFTP::SendCommand
}\label{wxftpsendcommand
}
138 \func{char
}{SendCommand
}{\param{const wxString\&
}{ command
}}
140 Send the specified
{\it command
} to the FTP server and return the first
141 character of the return code.
143 \membersection{wxFTP::GetLastResult
}
145 \func{const wxString\&
}{GetLastResult
}{\void}
147 Returns the last command result, i.e. the full server reply for the last
150 % ----------------------------------------------------------------------------
152 \membersection{wxFTP::ChDir
}
154 \func{bool
}{ChDir
}{\param{const wxString\&
}{ dir
}}
156 Change the current FTP working directory.
157 Returns true if successful.
159 \membersection{wxFTP::MkDir
}
161 \func{bool
}{MkDir
}{\param{const wxString\&
}{ dir
}}
163 Create the specified directory in the current FTP working directory.
164 Returns true if successful.
166 \membersection{wxFTP::RmDir
}
168 \func{bool
}{RmDir
}{\param{const wxString\&
}{ dir
}}
170 Remove the specified directory from the current FTP working directory.
171 Returns true if successful.
173 \membersection{wxFTP::Pwd
}
175 \func{wxString
}{Pwd
}{\void}
177 Returns the current FTP working directory.
179 % ----------------------------------------------------------------------------
181 \membersection{wxFTP::Rename
}
183 \func{bool
}{Rename
}{\param{const wxString\&
}{ src
},
\param{const wxString\&
}{ dst
}}
185 Rename the specified
{\it src
} element to
{\it dst
}. Returns true if successful.
187 % ----------------------------------------------------------------------------
189 \membersection{wxFTP::RmFile
}
191 \func{bool
}{RmFile
}{\param{const wxString\&
}{ path
}}
193 Delete the file specified by
{\it path
}. Returns true if successful.
195 % ----------------------------------------------------------------------------
197 \membersection{wxFTP::SetAscii
}
199 \func{bool
}{SetAscii
}{\void}
201 Sets the transfer mode to ASCII. It will be used for the next transfer.
203 \membersection{wxFTP::SetBinary
}
205 \func{bool
}{SetBinary
}{\void}
207 Sets the transfer mode to binary (IMAGE). It will be used for the next transfer.
209 \membersection{wxFTP::SetTransferMode
}
211 \func{bool
}{SetTransferMode
}{\param{TransferMode
}{mode
}}
213 Sets the transfer mode to the specified one. It will be used for the next
216 If this function is never called, binary transfer mode is used by default.
218 % ----------------------------------------------------------------------------
220 \membersection{wxFTP::SetUser
}
222 \func{void
}{SetUser
}{\param{const wxString\&
}{ user
}}
224 Sets the user name to be sent to the FTP server to be allowed to log in.
226 \wxheading{Default value
}
228 The default value of the user name is "anonymous".
232 This parameter can be included in a URL if you want to use the URL manager.
233 For example, you can use: "ftp://a
\_user:a
\_password@a.host:service/a
\_directory/a
\_file"
234 to specify a user and a password.
236 \membersection{wxFTP::SetPassword
}
238 \func{void
}{SetPassword
}{\param{const wxString\&
}{ passwd
}}
240 Sets the password to be sent to the FTP server to be allowed to log in.
242 \wxheading{Default value
}
244 The default value of the user name is your email address. For example, it could
245 be "username@userhost.domain". This password is built by getting the current
246 user name and the host name of the local machine from the system.
250 This parameter can be included in a URL if you want to use the URL manager.
251 For example, you can use: "ftp://a
\_user:a
\_password@a.host:service/a
\_directory/a
\_file"
252 to specify a user and a password.
254 % ----------------------------------------------------------------------------
256 \membersection{wxFTP::FileExists
}\label{wxftpfileexists
}
258 \func{bool
}{FileExists
}{\param{const wxString\&
}{ filename
}}
260 Returns
{\tt true
} if the given remote file exists,
{\tt false
} otherwise.
262 \membersection{wxFTP::GetFileSize
}\label{wxftpgetfilesize
}
264 \func{int
}{GetFileSize
}{\param{const wxString\&
}{ filename
}}
266 Returns the file size in bytes or $-
1$ if the file doesn't exist or the size
267 couldn't be determined. Notice that this size can be approximative size only
268 and shouldn't be used for allocating the buffer in which the remote file is
271 \membersection{wxFTP::GetDirList
}\label{wxftpgetdirlist
}
273 \func{bool
}{GetDirList
}{\param{wxArrayString\&
}{files
},
\param{const wxString\&
}{ wildcard = ""
}}
275 The GetList function is quite low-level. It returns the list of the files in
276 the current directory. The list can be filtered using the
{\it wildcard
} string.
277 If
{\it wildcard
} is empty (default), it will return all files in directory.
279 The form of the list can change from one peer system to another. For example,
280 for a UNIX peer system, it will look like this:
283 -r--r--r--
1 guilhem lavaux
12738 Jan
16 20:
17 cmndata.cpp
284 -r--r--r--
1 guilhem lavaux
10866 Jan
24 16:
41 config.cpp
285 -rw-rw-rw-
1 guilhem lavaux
29967 Dec
21 19:
17 cwlex_yy.c
286 -rw-rw-rw-
1 guilhem lavaux
14342 Jan
22 19:
51 cwy_tab.c
287 -r--r--r--
1 guilhem lavaux
13890 Jan
29 19:
18 date.cpp
288 -r--r--r--
1 guilhem lavaux
3989 Feb
8 19:
18 datstrm.cpp
291 But on Windows system, it will look like this:
294 winamp~
1 exe
520196 02-
25-
1999 19:
28 winamp204.exe
295 1 file(s)
520 196 bytes
298 Return value: true if the file list was successfully retrieved, false
303 \helpref{GetFilesList
}{wxftpgetfileslist
}
305 \membersection{wxFTP::GetFilesList
}\label{wxftpgetfileslist
}
307 \func{bool
}{GetFilesList
}{\param{wxArrayString\&
}{files
},
\param{const wxString\&
}{ wildcard = ""
}}
309 This function returns the computer-parsable list of the files in the current
310 directory (optionally only of the files matching the
{\it wildcard
}, all files
311 by default). This list always has the same format and contains one full
312 (including the directory path) file name per line.
314 Return value: true if the file list was successfully retrieved, false
317 % ----------------------------------------------------------------------------
319 \membersection{wxFTP::GetOutputStream
}
321 \func{wxOutputStream *
}{GetOutputStream
}{\param{const wxString\&
}{ file
}}
323 Initializes an output stream to the specified
{\it file
}. The returned
324 stream has all but the seek functionality of wxStreams. When the user finishes
325 writing data, he has to delete the stream to close it.
327 \wxheading{Return value
}
329 An initialized write-only stream.
333 \helpref{wxOutputStream
}{wxoutputstream
}
335 % ----------------------------------------------------------------------------
337 \membersection{wxFTP::GetInputStream
}\label{wxftpgetinput
}
339 \func{wxInputStream *
}{GetInputStream
}{\param{const wxString\&
}{ path
}}
341 Creates a new input stream on the the specified path. You can use all but the seek
342 functionality of wxStream. Seek isn't available on all streams. For example,
343 http or ftp streams do not deal with it. Other functions like Tell
344 are not available for this sort of stream, at present.
345 You will be notified when the EOF is reached by an error.
347 \wxheading{Return value
}
349 Returns NULL if an error occurred (it could be a network failure or the fact
350 that the file doesn't exist).
352 Returns the initialized stream. You will have to delete it yourself when you
353 don't need it anymore. The destructor closes the DATA stream connection but
354 will leave the COMMAND stream connection opened. It means that you can still
355 send new commands without reconnecting.
357 \wxheading{Example of a standalone connection (without wxURL)
}
361 wxInputStream *in_stream;
364 ftp.Connect("a.host.domain");
365 ftp.ChDir("a_directory");
366 in_stream = ftp.GetInputStream("a_file_to_get");
368 data = new char
[in_stream->StreamSize()
];
370 in_stream->Read(data, in_stream->StreamSize());
371 if (in_stream->LastError() != wxStream_NOERROR)
{
375 delete in_stream; /* Close the DATA connection */
377 ftp.Close(); /* Close the COMMAND connection */
382 \helpref{wxInputStream
}{wxinputstream
}