ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Communication / FTP functions
  • Managing the progress of the transfer
  • Timeout
  • Rights of users
  • Relative and absolute path
  • AS/400 FTP server
  • Required permissions
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
Others
Stored procedures
Transfers a file or directory from an FTP (File Transfer Protocol) server to the current computer.
WINDEVWEBDEV - Server codeiPhone/iPadIOS WidgetMac Catalyst Note: To quickly retrieve a single file from the FTP server, use FTPGetFile.
New in SaaS
A new syntax for manipulating variables of type ftpConnection is available from WINDEV Suite SaaS 2025 - Update 2.
WINDEVWEBDEV - Server codeReports and QueriesAndroidAndroid Widget JavaUser code (UMC)Ajax
// Connect the current computer to the FTP server
ConnectionNumber = FTPConnect("192.54.12.8")
// Download the "/Document/File.txt" file found on the FTP server 
// in the "D:\Temp" directory on the current computer 
ResRetrieve = FTPGet(ConnectionNumber, "/Document/File.txt", "D:\Temp")
New in SaaS
WINDEVWEBDEV - Server codeReports and QueriesAndroidAndroid Widget JavaUser code (UMC)Ajax
// Syntax not available in PHP
// Connect the current computer to the FTP server
MyFTPConnection is ftpConnection
MyFTPConnection.Server = "192.54.12.8"
FTPConnect(MyFTPConnection)

// Download the "/Document/File.txt" file found on the FTP server 
// in the "D:\Temp" directory on the current computer 
ResRetrieve = FTPGet(MyFTPConnection, "/Document/File.txt", "D:\Temp")
Syntax
<Result> = FTPGet(<FTP connection> , <File/Directory to retrieve> , <Destination file/directory> [, <WLanguage procedure> [, <Transfer mode>]])
<Result>: Boolean
  • True if the transfer has been completed,
  • False otherwise. To get more details on the error, use ErrorInfo with the errMessage constant.
    Note: The result may be incorrect on some Unix servers. Existing files or directories may not be found.
<FTP connection>: Integer or ftpConnection variable
<File/Directory to retrieve>: Character string
Name and full or relative path of the file or directory to retrieve. This file or directory is located on the FTP server. The different parts of the path are separated by "slashes" ("/").
Note: Directory names are case sensitive. You must use the same case as the one used on the FTP server (uppercase/lowercase characters).
No wildcard character (* or?) can be used. To retrieve several files, first use FTPListFile to get the name of the files to be retrieved.
An absolute path has the following format: "/<DirectoryName>/<FileName>". The tree structure has the following format: "/<DirectoryName>/<FileName>".
A relative path has the following format: "<DirectoryName>/<FileName>". The tree structure has the following format: "/<CurrentServerDirectory>/<DirectoryName>/<FileName>".
If this parameter is a directory, all files in the directory are retrieved. A directory with the same name is created on the current computer at the location specified by <Destination file/directory>.
If this parameter is a file:
  • if <Destination file/directory> is a directory found on the current computer, the file to retrieve is copied to the destination directory.
  • if <Destination file/directory> is a file found on the current computer, the file to retrieve is copied and renamed.
<Destination file/directory>: Character string
Name and full or relative path of the destination file or directory. A UNC path can be used.
<WLanguage procedure>: Procedure name
Name of WLanguage procedure automatically called to check the transfer progress. This procedure can be a global method of the class (in the following format: <Class name>::<GlobalMethodName>).
PHP This parameter is not available.
<Transfer mode>: Optional Integer constant
Transfer mode used:
ftpASCIIModeTransfer performed in ASCII mode. This mode is used to transfer files between different operating systems, e.g. UNIX to Windows. The file is delivered in the ASCII format used by the receiving system.
ftpBinaryMode
(Default value)
Transfer performed in binary mode. The file is strictly identical between the sending and the receiving.
Remarks
WINDEVWEBDEV - Server codeReports and QueriesAndroidAndroid Widget JavaUser code (UMC)Ajax

Managing the progress of the transfer

FTPGet is a blocking function. No other action can be performed until the current transfer has been completed.
To check the progress of the transfer, FTPGet can automatically call the <WLanguage procedure> at regular intervals (every 64 KB).
This procedure is declared as follows:
PROCEDURE <Procedure name>(<Total size>, <Transferred size>)
where:
  • <Total size> is an integer representing the total size of the file or directory being transferred.
  • <Transferred size> is an integer representing the number of bytes already transferred.
In this procedure, you can:
  • display a progress bar (using a Progress Bar control for example),
  • determine if the transfer is completed (<Total size> = <Transferred size>).
FTPGet cannot be interrupted until all files have been transferred. To stop the function, use the following line of code in <Procedure name>:
RETURN False
In any other case (to continue), <Procedure name> MUST return True.
An error is generated if <Procedure name> returns no value (neither True nor False).

Timeout

By default, all the FTP functions fail if the FTP server does not respond within 20 seconds. This time can be modified:

Rights of users

Only a user who has read rights on the FTP server can get information about the files or the directories located on an FTP server. In most cases, the read rights are granted to the "anonymous" users.

Relative and absolute path

The notions of relative path and absolute path are very important in an FTP application.
  • A path beginning with a slash is considered an absolute path. This path is relative to the root of the FTP server (server-specific parameter).
    ex: /pub/user/JULIA
  • If the path does not begin with a slash, it is considered a relative path, i.e. the path relative to the current directory. This current directory can be obtained or changed using FTPCurrentDir.
When connecting to an FTP site, the initial directory (the "base directory" of the user) is not necessarily found at the root of the FTP server. Therefore, we recommend that you use relative paths.

AS/400 FTP server

FTPGet does not work properly on an AS/400 FTP server.
In this case, we recommend that you use FTPCommand with the FTP "RETR" command (for more details, see the documentation about the FTP server).
AndroidAndroid Widget

Required permissions

This function changes the permissions required by the application.
Required permission: INTERNET
This permission allows the applications to open the network sockets.
Business / UI classification: Business Logic
Component: wd300com.dll
Minimum version required
  • Version 9
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 05/05/2025

Send a report | Local help