]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/ftp.tex
documented wxDateSpan
[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$
8%% Copyright: (c) wxWindows team
9%% License: wxWindows license
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");
40 wxInputStream *in = ftp.GetInputStream("wxWindows-4.2.0.tar.gz");
41 if ( !in )
42 {
43 wxLogError("Coudln't get file");
44 }
45 else
46 {
47 size_t size = in->StreamSize();
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
90\helpref{wxProtocol}{wxprotocol}
91
954b8ae6
JS
92\wxheading{Include files}
93
9a1b2c28 94<wx/protocol/ftp.h>
954b8ae6 95
7d2946d2
GL
96\wxheading{See also}
97
98\helpref{wxSocketBase}{wxsocketbase}
99
100% ----------------------------------------------------------------------------
101% Members
102% ----------------------------------------------------------------------------
103
296ec7d3 104\latexignore{\rtfignore{\wxheading{Members}}}
7d2946d2 105
d9a50173
VZ
106\membersection{wxFTP::wxFTP}
107
108\func{}{wxFTP}{\void}
109
110Default constructor.
7d2946d2 111
d9a50173
VZ
112\membersection{wxFTP::\destruct{wxFTP}}
113
114\func{}{\destruct{wxFTP}}{\void}
115
116Destructor will close the connection if connected.
117
2b5f62a0
VZ
118\membersection{wxFTP::Abort}\label{wxftpabort}
119
120\func{bool}{Abort}{\void}
121
122Aborts the download currently in process, returns {\tt TRUE} if ok, {\tt FALSE}
123if an error occured.
124
d9a50173
VZ
125\membersection{wxFTP::CheckCommand}
126
127\func{bool}{CheckCommand}{\param{const wxString\&}{ command}, \param{char }{ret}}
7d2946d2 128
605d715d 129Send the specified {\it command} to the FTP server. {\it ret} specifies
7d2946d2
GL
130the expected result.
131
132\wxheading{Return value}
133
fa482912 134TRUE if the command has been sent successfully, else FALSE.
7d2946d2 135
d9a50173
VZ
136\membersection{wxFTP::SendCommand}\label{wxftpsendcommand}
137
138\func{char}{SendCommand}{\param{const wxString\&}{ command}}
139
140Send the specified {\it command} to the FTP server and return the first
141character of the return code.
7d2946d2
GL
142
143\membersection{wxFTP::GetLastResult}
144
145\func{const wxString\&}{GetLastResult}{\void}
146
d9a50173
VZ
147Returns the last command result, i.e. the full server reply for the last
148command.
7d2946d2
GL
149
150% ----------------------------------------------------------------------------
151
152\membersection{wxFTP::ChDir}
153
6be663cf 154\func{bool}{ChDir}{\param{const wxString\&}{ dir}}
7d2946d2
GL
155
156Change the current FTP working directory.
40b480c3 157Returns TRUE if successful.
7d2946d2
GL
158
159\membersection{wxFTP::MkDir}
160
6be663cf 161\func{bool}{MkDir}{\param{const wxString\&}{ dir}}
7d2946d2
GL
162
163Create the specified directory in the current FTP working directory.
40b480c3 164Returns TRUE if successful.
7d2946d2
GL
165
166\membersection{wxFTP::RmDir}
167
6be663cf 168\func{bool}{RmDir}{\param{const wxString\&}{ dir}}
7d2946d2
GL
169
170Remove the specified directory from the current FTP working directory.
40b480c3 171Returns TRUE if successful.
7d2946d2
GL
172
173\membersection{wxFTP::Pwd}
174
175\func{wxString}{Pwd}{\void}
176
177Returns the current FTP working directory.
178
179% ----------------------------------------------------------------------------
180
181\membersection{wxFTP::Rename}
182
6be663cf 183\func{bool}{Rename}{\param{const wxString\&}{ src}, \param{const wxString\&}{ dst}}
7d2946d2 184
605d715d 185Rename the specified {\it src} element to {\it dst}. Returns TRUE if successful.
7d2946d2
GL
186
187% ----------------------------------------------------------------------------
188
189\membersection{wxFTP::RmFile}
190
6be663cf 191\func{bool}{RmFile}{\param{const wxString\&}{ path}}
7d2946d2 192
605d715d 193Delete the file specified by {\it path}. Returns TRUE if successful.
7d2946d2
GL
194
195% ----------------------------------------------------------------------------
196
d9a50173
VZ
197\membersection{wxFTP::SetAscii}
198
199\func{bool}{SetAscii}{\void}
200
201Sets the transfer mode to ASCII. It will be used for the next transfer.
202
203\membersection{wxFTP::SetBinary}
204
205\func{bool}{SetBinary}{\void}
206
207Sets the transfer mode to binary (IMAGE). It will be used for the next transfer.
208
209\membersection{wxFTP::SetTransferMode}
210
211\func{bool}{SetTransferMode}{\param{TransferMode }{mode}}
212
213Sets the transfer mode to the specified one. It will be used for the next
214transfer.
215
216If this function is never called, binary transfer mode is used by default.
217
218% ----------------------------------------------------------------------------
219
9a1b2c28 220\membersection{wxFTP::SetUser}
721b32e0 221
9a1b2c28
GL
222\func{void}{SetUser}{\param{const wxString\&}{ user}}
223
224Sets the user name to be sent to the FTP server to be allowed to log in.
225
226\wxheading{Default value}
227
228The default value of the user name is "anonymous".
229
230\wxheading{Remark}
231
232This parameter can be included in a URL if you want to use the URL manager.
294e9a7a 233For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory/a\_file"
9a1b2c28
GL
234to specify a user and a password.
235
236\membersection{wxFTP::SetPassword}
721b32e0 237
9a1b2c28
GL
238\func{void}{SetPassword}{\param{const wxString\&}{ passwd}}
239
240Sets the password to be sent to the FTP server to be allowed to log in.
241
242\wxheading{Default value}
243
244The default value of the user name is your email address. For example, it could
245be "username@userhost.domain". This password is built by getting the current
246user name and the host name of the local machine from the system.
247
248\wxheading{Remark}
249
250This parameter can be included in a URL if you want to use the URL manager.
294e9a7a 251For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory/a\_file"
9a1b2c28
GL
252to specify a user and a password.
253
254% ----------------------------------------------------------------------------
721b32e0 255
2b5f62a0
VZ
256\membersection{wxFTP::FileExists}\label{wxftpfileexists}
257
258\func{bool}{FileExists}{\param{const wxString\&}{ filename}}
259
260Returns {\tt TRUE} if the given remote file exists, {\tt FALSE} otherwise.
261
262\membersection{wxFTP::GetFileSize}\label{wxftpgetfilesize}
263
264\func{int}{GetFileSize}{\param{const wxString\&}{ filename}}
265
266Returns the file size in bytes or $-1$ if the file doesn't exist or the size
267couldn't be determined. Notice that this size can be approximative size only
268and shouldn't be used for allocating the buffer in which the remote file is
269copied, for example.
270
d9a50173
VZ
271\membersection{wxFTP::GetDirList}\label{wxftpgetdirlist}
272
273\func{bool}{GetDirList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}}
9a1b2c28
GL
274
275The GetList function is quite low-level. It returns the list of the files in
605d715d 276the current directory. The list can be filtered using the {\it wildcard} string.
8e907a13 277If {\it wildcard} is empty (default), it will return all files in directory.
9a1b2c28
GL
278
279The form of the list can change from one peer system to another. For example,
280for a UNIX peer system, it will look like this:
296ec7d3 281
9a1b2c28
GL
282\begin{verbatim}
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
289\end{verbatim}
290
291But on Windows system, it will look like this:
296ec7d3 292
9a1b2c28
GL
293\begin{verbatim}
294winamp~1 exe 520196 02-25-1999 19:28 winamp204.exe
295 1 file(s) 520 196 bytes
296\end{verbatim}
297
8e907a13
VZ
298Return value: TRUE if the file list was successfully retrieved, FALSE
299otherwise.
9a1b2c28 300
d9a50173
VZ
301\wxheading{See also}
302
303\helpref{GetFilesList}{wxftpgetfileslist}
304
305\membersection{wxFTP::GetFilesList}\label{wxftpgetfileslist}
306
307\func{bool}{GetFilesList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}}
308
309This function returns the computer-parsable list of the files in the current
310directory (optionally only of the files matching the {\it wildcard}, all files
311by default). This list always has the same format and contains one full
312(including the directory path) file name per line.
313
314Return value: TRUE if the file list was successfully retrieved, FALSE
315otherwise.
316
9a1b2c28
GL
317% ----------------------------------------------------------------------------
318
7d2946d2
GL
319\membersection{wxFTP::GetOutputStream}
320
6be663cf 321\func{wxOutputStream *}{GetOutputStream}{\param{const wxString\&}{ file}}
7d2946d2 322
605d715d 323Initializes an output stream to the specified {\it file}. The returned
6be663cf 324stream has all but the seek functionality of wxStreams. When the user finishes
7d2946d2
GL
325writing data, he has to delete the stream to close it.
326
327\wxheading{Return value}
328
329An initialized write-only stream.
6be663cf 330
7f42cff1
GL
331\wxheading{See also}
332
333\helpref{wxOutputStream}{wxoutputstream}
0492c5a0 334
9a1b2c28
GL
335% ----------------------------------------------------------------------------
336
337\membersection{wxFTP::GetInputStream}\label{wxftpgetinput}
338
339\func{wxInputStream *}{GetInputStream}{\param{const wxString\&}{ path}}
340
fa482912
JS
341Creates a new input stream on the the specified path. You can use all but the seek
342functionality of wxStream. Seek isn't available on all streams. For example,
343http or ftp streams do not deal with it. Other functions like Tell
344are not available for this sort of stream, at present.
9a1b2c28
GL
345You will be notified when the EOF is reached by an error.
346
347\wxheading{Return value}
348
f6bcfd97 349Returns NULL if an error occurred (it could be a network failure or the fact
9a1b2c28
GL
350that the file doesn't exist).
351
fa482912
JS
352Returns the initialized stream. You will have to delete it yourself when you
353don't need it anymore. The destructor closes the DATA stream connection but
354will leave the COMMAND stream connection opened. It means that you can still
355send new commands without reconnecting.
9a1b2c28
GL
356
357\wxheading{Example of a standalone connection (without wxURL)}
358
359\begin{verbatim}
360 wxFTP ftp;
70be2567 361 wxInputStream *in_stream;
9a1b2c28
GL
362 char *data;
363
364 ftp.Connect("a.host.domain");
70be2567
VS
365 ftp.ChDir("a_directory");
366 in_stream = ftp.GetInputStream("a_file_to_get");
9a1b2c28 367
70be2567 368 data = new char[in_stream->StreamSize()];
9a1b2c28 369
70be2567
VS
370 in_stream->Read(data, in_stream->StreamSize());
371 if (in_stream->LastError() != wxStream_NOERROR) {
9a1b2c28
GL
372 // Do something.
373 }
374
70be2567 375 delete in_stream; /* Close the DATA connection */
9a1b2c28
GL
376
377 ftp.Close(); /* Close the COMMAND connection */
378\end{verbatim}
379
380\wxheading{See also}
381
382\helpref{wxInputStream}{wxinputstream}
721b32e0 383