Description
-
Downloads multiple files in a sequence, recursive.
Return type
-
A Long value. If successful, 0 is returned, otherwise
error as specified here.
Syntax
-
long Sftp_GetFiles(void *Sftp, char *LocalPath,
char * RemotePath, int MaxLevel);
The GetFiles function syntax has these parts:
| void
*Sftp |
Handle of the created Sftp
instance. |
| char
*LocalPath |
Holds full path on local disk
where files are downloaded. |
| char
*RemotePath |
Holds full path on the server
from where files are downloaded. |
| int MaxLevel |
Specifies maximum number of
subdirectory levels to copy. 0 for unlimited. |
Remarks
-
This function will try to download complete directory structure
of the server to local disk. You need to specify
LocalPath argument that points to a
directory where files are placed, and
RemotePath that determines location from where are files
copied.
GetFiles will go and recursive copy directories and files -
corresponding directory structure will also be created on local
disk. If remote item that is copied is a symbolic link, it is
resolved to appropriate file/folder whose contents are also copied.
wodSFTP will go up to MaxLevel deep
into recursion. Default value is 5 - meaning up to 5 subdirectory
levels will be copied. You can specify any value for
MaxLevel. If you specify 0, that means
that no restriction exists for recursion depth - this is dangerous
setting that could cause infinite loops to be created if remote
system has symbolic links pointing back to other items that is
already copied!
Before each item is copied,
LoopItem callback
will be called, specifying local name of the file/folder, its remote
name (including full path in both cases), type of the item
(file/folder/symbolic link) and will allow you to
Skip the item so it is not copied
locally at all. Make sure your logic for setting
Skip = True is correct - if you
skip creation of local directory and then try to download files to
it, you may get more errors! Since GetFiles does not support
wildcards (for example, you cannot specify "*.TXT" in GetFiles
call), LoopItem is a place to determine if certain item matches your
wildcard expression (if you have any), so you can skip files that
doesn't match your criteria.
If an errors occurs during file download,
LoopError
callback is called holding error number and error description of the
error. If you leave ErrorCode argument
in LoopError callback as is - GetFiles operation will be aborted. If
you change ErrorCode value in LoopError
event to 0, then GetFiles operation will continue (ignoring the
error) normally.
Do not forget that RemotePath should always
specify full absolute path (i.e. /home/joe/something) instead of
relative path (i.e. joe/something). LocalPath should also specify
full path (i.e. C:\home\joe\something) instead of relative path
(i.e. joe\something).
|