]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/ftp.tex
Remove double entry of wxTrackable
[wxWidgets.git] / docs / latex / wx / ftp.tex
CommitLineData
d9a50173
VZ
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: ftp.tex
3%% Purpose: wxFTP documentation
4%% Author: Guilhem Lavaux, Vadim Zeitlin
5%% Modified by:
6%% Created: ~1997
7%% RCS-ID: $Id$
fc2171bd 8%% Copyright: (c) wxWidgets team
8795498c 9%% License: wxWindows license
d9a50173
VZ
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
7d2946d2
GL
12\section{\class{wxFTP}}\label{wxftp}
13
d9a50173
VZ
14wxFTP can be used to establish a connection to an FTP server and perform all the
15usual operations. Please consult the RFC 959 for more details about the FTP
16protocol.
17
18To use a commands which doesn't involve file transfer (i.e. directory oriented
19commands) you just need to call a corresponding member function or use the
20generic \helpref{SendCommand}{wxftpsendcommand} method. However to actually
21transfer files you just get or give a stream to or from this class and the
22actual data are read or written using the usual stream methods.
23
24Example of using wxFTP for file downloading:
25
26\begin{verbatim}
27 wxFTP ftp;
28
29 // if you don't use these lines anonymous login will be used
30 ftp.SetUser("user");
31 ftp.SetPassword("password");
32
33 if ( !ftp.Connect("ftp.wxwindows.org") )
34 {
35 wxLogError("Couldn't connect");
36 return;
37 }
38
39 ftp.ChDir("/pub");
fc2171bd 40 wxInputStream *in = ftp.GetInputStream("wxWidgets-4.2.0.tar.gz");
d9a50173
VZ
41 if ( !in )
42 {
43 wxLogError("Coudln't get file");
44 }
45 else
46 {
90e3949c 47 size_t size = in->GetSize();
d9a50173
VZ
48 char *data = new char[size];
49 if ( !in->Read(data, size) )
50 {
51 wxLogError("Read error");
52 }
53 else
54 {
55 // file data is in the buffer
56 ...
57 }
58
59 delete [] data;
60 delete in;
61 }
62\end{verbatim}
63
64To upload a file you would do (assuming the connection to the server was opened
65successfully):
66
67\begin{verbatim}
68 wxOutputStream *out = ftp.GetOutputStream("filename");
69 if ( out )
70 {
71 out->Write(...); // your data
72 delete out;
73 }
74\end{verbatim}
75
76\wxheading{Constants}
77
78wxFTP defines constants corresponding to the two supported transfer modes:
79
80\begin{verbatim}
81enum TransferMode
82{
83 ASCII,
84 BINARY
85};
86\end{verbatim}
87
7d2946d2
GL
88\wxheading{Derived from}
89
7376079d
VZ
90\helpref{wxProtocol}{wxprotocol}\\
91\helpref{wxSocketClient}{wxsocketclient}\\
92\helpref{wxSocketBase}{wxsocketbase}\\
93\helpref{wxObject}{wxobject}
7d2946d2 94
954b8ae6
JS
95\wxheading{Include files}
96
9a1b2c28 97<wx/protocol/ftp.h>
954b8ae6 98
a7af285d
VZ
99\wxheading{Library}
100
101\helpref{wxNet}{librarieslist}
102
7d2946d2
GL
103\wxheading{See also}
104
105\helpref{wxSocketBase}{wxsocketbase}
106
107% ----------------------------------------------------------------------------
108% Members
109% ----------------------------------------------------------------------------
110
296ec7d3 111\latexignore{\rtfignore{\wxheading{Members}}}
7d2946d2 112
e2454588 113
f0e8a2d0 114\membersection{wxFTP::wxFTP}\label{wxftpctor}
d9a50173
VZ
115
116\func{}{wxFTP}{\void}
117
118Default constructor.
7d2946d2 119
e2454588 120
f0e8a2d0 121\membersection{wxFTP::\destruct{wxFTP}}\label{wxftpdtor}
d9a50173
VZ
122
123\func{}{\destruct{wxFTP}}{\void}
124
125Destructor will close the connection if connected.
126
e2454588 127
2b5f62a0
VZ
128\membersection{wxFTP::Abort}\label{wxftpabort}
129
130\func{bool}{Abort}{\void}
131
43e8916f
MW
132Aborts the download currently in process, returns \true if ok, \false
133if an error occurred.
2b5f62a0 134
e2454588 135
f0e8a2d0 136\membersection{wxFTP::CheckCommand}\label{wxftpcheckcommand}
d9a50173
VZ
137
138\func{bool}{CheckCommand}{\param{const wxString\&}{ command}, \param{char }{ret}}
7d2946d2 139
605d715d 140Send the specified {\it command} to the FTP server. {\it ret} specifies
7d2946d2
GL
141the expected result.
142
143\wxheading{Return value}
144
cc81d32f 145true if the command has been sent successfully, else false.
7d2946d2 146
e2454588 147
d9a50173
VZ
148\membersection{wxFTP::SendCommand}\label{wxftpsendcommand}
149
150\func{char}{SendCommand}{\param{const wxString\&}{ command}}
151
152Send the specified {\it command} to the FTP server and return the first
153character of the return code.
7d2946d2 154
e2454588 155
f0e8a2d0 156\membersection{wxFTP::GetLastResult}\label{wxftpgetlastresult}
7d2946d2
GL
157
158\func{const wxString\&}{GetLastResult}{\void}
159
d9a50173
VZ
160Returns the last command result, i.e. the full server reply for the last
161command.
7d2946d2
GL
162
163% ----------------------------------------------------------------------------
164
e2454588 165
f0e8a2d0 166\membersection{wxFTP::ChDir}\label{wxftpchdir}
7d2946d2 167
6be663cf 168\func{bool}{ChDir}{\param{const wxString\&}{ dir}}
7d2946d2
GL
169
170Change the current FTP working directory.
cc81d32f 171Returns true if successful.
7d2946d2 172
e2454588 173
f0e8a2d0 174\membersection{wxFTP::MkDir}\label{wxftpmkdir}
7d2946d2 175
6be663cf 176\func{bool}{MkDir}{\param{const wxString\&}{ dir}}
7d2946d2
GL
177
178Create the specified directory in the current FTP working directory.
cc81d32f 179Returns true if successful.
7d2946d2 180
e2454588 181
f0e8a2d0 182\membersection{wxFTP::RmDir}\label{wxftprmdir}
7d2946d2 183
6be663cf 184\func{bool}{RmDir}{\param{const wxString\&}{ dir}}
7d2946d2
GL
185
186Remove the specified directory from the current FTP working directory.
cc81d32f 187Returns true if successful.
7d2946d2 188
e2454588 189
f0e8a2d0 190\membersection{wxFTP::Pwd}\label{wxftppwd}
7d2946d2
GL
191
192\func{wxString}{Pwd}{\void}
193
194Returns the current FTP working directory.
195
196% ----------------------------------------------------------------------------
197
e2454588 198
f0e8a2d0 199\membersection{wxFTP::Rename}\label{wxftprename}
7d2946d2 200
6be663cf 201\func{bool}{Rename}{\param{const wxString\&}{ src}, \param{const wxString\&}{ dst}}
7d2946d2 202
cc81d32f 203Rename the specified {\it src} element to {\it dst}. Returns true if successful.
7d2946d2
GL
204
205% ----------------------------------------------------------------------------
206
e2454588 207
f0e8a2d0 208\membersection{wxFTP::RmFile}\label{wxftprmfile}
7d2946d2 209
6be663cf 210\func{bool}{RmFile}{\param{const wxString\&}{ path}}
7d2946d2 211
cc81d32f 212Delete the file specified by {\it path}. Returns true if successful.
7d2946d2
GL
213
214% ----------------------------------------------------------------------------
215
e2454588 216
f0e8a2d0 217\membersection{wxFTP::SetAscii}\label{wxftpsetascii}
d9a50173
VZ
218
219\func{bool}{SetAscii}{\void}
220
221Sets the transfer mode to ASCII. It will be used for the next transfer.
222
e2454588 223
f0e8a2d0 224\membersection{wxFTP::SetBinary}\label{wxftpsetbinary}
d9a50173
VZ
225
226\func{bool}{SetBinary}{\void}
227
228Sets the transfer mode to binary (IMAGE). It will be used for the next transfer.
229
e2454588 230
f0e8a2d0 231\membersection{wxFTP::SetPassive}\label{wxftpsetpassive}
e2454588
VZ
232
233\func{void}{SetPassive}{\param{bool }{pasv}}
234
235If \arg{pasv} is \true, passive connection to the FTP server is used. This is
236the default as it works with practically all firewalls. If the server doesn't
237support passive move, you may call this function with \false argument to use
238active connection.
239
240
f0e8a2d0 241\membersection{wxFTP::SetTransferMode}\label{wxftpsettransfermode}
d9a50173
VZ
242
243\func{bool}{SetTransferMode}{\param{TransferMode }{mode}}
244
245Sets the transfer mode to the specified one. It will be used for the next
246transfer.
247
248If this function is never called, binary transfer mode is used by default.
249
250% ----------------------------------------------------------------------------
251
e2454588 252
f0e8a2d0 253\membersection{wxFTP::SetUser}\label{wxftpsetuser}
721b32e0 254
9a1b2c28
GL
255\func{void}{SetUser}{\param{const wxString\&}{ user}}
256
257Sets the user name to be sent to the FTP server to be allowed to log in.
258
259\wxheading{Default value}
260
261The default value of the user name is "anonymous".
262
263\wxheading{Remark}
264
265This parameter can be included in a URL if you want to use the URL manager.
294e9a7a 266For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory/a\_file"
9a1b2c28
GL
267to specify a user and a password.
268
e2454588 269
f0e8a2d0 270\membersection{wxFTP::SetPassword}\label{wxftpsetpassword}
721b32e0 271
9a1b2c28
GL
272\func{void}{SetPassword}{\param{const wxString\&}{ passwd}}
273
274Sets the password to be sent to the FTP server to be allowed to log in.
275
276\wxheading{Default value}
277
278The default value of the user name is your email address. For example, it could
279be "username@userhost.domain". This password is built by getting the current
280user name and the host name of the local machine from the system.
281
282\wxheading{Remark}
283
284This parameter can be included in a URL if you want to use the URL manager.
294e9a7a 285For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory/a\_file"
9a1b2c28
GL
286to specify a user and a password.
287
288% ----------------------------------------------------------------------------
721b32e0 289
e2454588 290
2b5f62a0
VZ
291\membersection{wxFTP::FileExists}\label{wxftpfileexists}
292
293\func{bool}{FileExists}{\param{const wxString\&}{ filename}}
294
43e8916f 295Returns \true if the given remote file exists, \false otherwise.
2b5f62a0 296
e2454588 297
2b5f62a0
VZ
298\membersection{wxFTP::GetFileSize}\label{wxftpgetfilesize}
299
300\func{int}{GetFileSize}{\param{const wxString\&}{ filename}}
301
302Returns the file size in bytes or $-1$ if the file doesn't exist or the size
303couldn't be determined. Notice that this size can be approximative size only
304and shouldn't be used for allocating the buffer in which the remote file is
305copied, for example.
306
e2454588 307
d9a50173
VZ
308\membersection{wxFTP::GetDirList}\label{wxftpgetdirlist}
309
310\func{bool}{GetDirList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}}
9a1b2c28
GL
311
312The GetList function is quite low-level. It returns the list of the files in
605d715d 313the current directory. The list can be filtered using the {\it wildcard} string.
8e907a13 314If {\it wildcard} is empty (default), it will return all files in directory.
9a1b2c28
GL
315
316The form of the list can change from one peer system to another. For example,
317for a UNIX peer system, it will look like this:
296ec7d3 318
9a1b2c28
GL
319\begin{verbatim}
320-r--r--r-- 1 guilhem lavaux 12738 Jan 16 20:17 cmndata.cpp
321-r--r--r-- 1 guilhem lavaux 10866 Jan 24 16:41 config.cpp
322-rw-rw-rw- 1 guilhem lavaux 29967 Dec 21 19:17 cwlex_yy.c
323-rw-rw-rw- 1 guilhem lavaux 14342 Jan 22 19:51 cwy_tab.c
324-r--r--r-- 1 guilhem lavaux 13890 Jan 29 19:18 date.cpp
325-r--r--r-- 1 guilhem lavaux 3989 Feb 8 19:18 datstrm.cpp
326\end{verbatim}
327
328But on Windows system, it will look like this:
296ec7d3 329
9a1b2c28
GL
330\begin{verbatim}
331winamp~1 exe 520196 02-25-1999 19:28 winamp204.exe
332 1 file(s) 520 196 bytes
333\end{verbatim}
334
cc81d32f 335Return value: true if the file list was successfully retrieved, false
8e907a13 336otherwise.
9a1b2c28 337
d9a50173
VZ
338\wxheading{See also}
339
340\helpref{GetFilesList}{wxftpgetfileslist}
341
e2454588 342
d9a50173
VZ
343\membersection{wxFTP::GetFilesList}\label{wxftpgetfileslist}
344
345\func{bool}{GetFilesList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}}
346
347This function returns the computer-parsable list of the files in the current
348directory (optionally only of the files matching the {\it wildcard}, all files
349by default). This list always has the same format and contains one full
350(including the directory path) file name per line.
351
cc81d32f 352Return value: true if the file list was successfully retrieved, false
d9a50173
VZ
353otherwise.
354
9a1b2c28
GL
355% ----------------------------------------------------------------------------
356
e2454588 357
f0e8a2d0 358\membersection{wxFTP::GetOutputStream}\label{wxftpgetoutputstream}
7d2946d2 359
6be663cf 360\func{wxOutputStream *}{GetOutputStream}{\param{const wxString\&}{ file}}
7d2946d2 361
605d715d 362Initializes an output stream to the specified {\it file}. The returned
6be663cf 363stream has all but the seek functionality of wxStreams. When the user finishes
7d2946d2
GL
364writing data, he has to delete the stream to close it.
365
366\wxheading{Return value}
367
368An initialized write-only stream.
6be663cf 369
7f42cff1
GL
370\wxheading{See also}
371
372\helpref{wxOutputStream}{wxoutputstream}
0492c5a0 373
9a1b2c28
GL
374% ----------------------------------------------------------------------------
375
e2454588 376
f0e8a2d0 377\membersection{wxFTP::GetInputStream}\label{wxftpgetinputstream}
9a1b2c28
GL
378
379\func{wxInputStream *}{GetInputStream}{\param{const wxString\&}{ path}}
380
43e8916f 381Creates a new input stream on the specified path. You can use all but the seek
fa482912 382functionality of wxStream. Seek isn't available on all streams. For example,
43e8916f 383HTTP or FTP streams do not deal with it. Other functions like Tell
fa482912 384are not available for this sort of stream, at present.
9a1b2c28
GL
385You will be notified when the EOF is reached by an error.
386
387\wxheading{Return value}
388
f6bcfd97 389Returns NULL if an error occurred (it could be a network failure or the fact
9a1b2c28
GL
390that the file doesn't exist).
391
fa482912
JS
392Returns the initialized stream. You will have to delete it yourself when you
393don't need it anymore. The destructor closes the DATA stream connection but
394will leave the COMMAND stream connection opened. It means that you can still
395send new commands without reconnecting.
9a1b2c28
GL
396
397\wxheading{Example of a standalone connection (without wxURL)}
398
399\begin{verbatim}
400 wxFTP ftp;
70be2567 401 wxInputStream *in_stream;
9a1b2c28
GL
402 char *data;
403
404 ftp.Connect("a.host.domain");
70be2567
VS
405 ftp.ChDir("a_directory");
406 in_stream = ftp.GetInputStream("a_file_to_get");
9a1b2c28 407
90e3949c 408 data = new char[in_stream->GetSize()];
9a1b2c28 409
90e3949c 410 in_stream->Read(data, in_stream->GetSize());
70be2567 411 if (in_stream->LastError() != wxStream_NOERROR) {
9a1b2c28
GL
412 // Do something.
413 }
414
70be2567 415 delete in_stream; /* Close the DATA connection */
9a1b2c28
GL
416
417 ftp.Close(); /* Close the COMMAND connection */
418\end{verbatim}
419
420\wxheading{See also}
421
422\helpref{wxInputStream}{wxinputstream}
721b32e0 423