Skip to main content


class EnsLib.FTP.InboundAdapter extends EnsLib.File.InboundAdapter, EnsLib.FTP.Common

Adapter that receives files via the FTP protocol.

Property Inventory

Method Inventory


parameter SETTINGS = RegistryID:Basic:selector?context={Ens.ServiceRegistry.External.ContextSearch/Services?Protocols_1=FTP},DeleteFromServer:Basic,UseFileStream,-WorkPath,ServerListStyle,-SFTPFileAccessMode;
Inherited description: List of properties can be set as settings in the configuration file format is a comma separated list of property names


property AppendTimestamp as %String [ InitialExpression = 1 ];
Append a timestamp to Archive filenames in order to prevent possible name collisions on repeated processing of the same filename.

If this value is empty or 0, no timestamp will be appended. If it is 1, then the standard timestamped filename specification template '%f_%Q' will be used.

Any other value will be used directly as a timestamped filename specification template.

Property methods: AppendTimestampDisplayToLogical(), AppendTimestampGet(), AppendTimestampIsValid(), AppendTimestampLogicalToDisplay(), AppendTimestampLogicalToOdbc(), AppendTimestampNormalize(), AppendTimestampSet()
property ArchivePath as %String (MAXLEN = 1000);
Path on the Ensemble server to save a copy of each file received from the FTP server. If not given, the local copy of the file will be stored in a temporary location and then deleted after processing is completed. Note that the AppendTimestamp option must be used to avoid name collisions in the archive directory if the same filename will be retrieved repeatedly.
Property methods: ArchivePathDisplayToLogical(), ArchivePathGet(), ArchivePathIsValid(), ArchivePathLogicalToDisplay(), ArchivePathLogicalToOdbc(), ArchivePathNormalize()
property Charset as %String [ InitialExpression = "Binary" ];
FTP - Use the named Character encoding to translate characters from the file.
A * prepended to any of the charset names will cause a binary FTP transfer with the resulting data then translated using the specified encoding.
Note that Binary should be chosen for binary files and other cases when special characters such as line terminators must be preserved.
Other settings may be useful when transferring text documents via FTP.

Choices include:
Binary - binary transfer
Ascii - Ascii mode FTP transfer but no character encoding translation
Native - the default character encoding of the installed locale of the Ensemble server
latin1 - the ISO Latin1 8-bit encoding
ISO-8859-1 - the ISO Latin1 8-bit encoding
UTF-8 - the Unicode 8-bit encoding
Unicode - the Unicode 16-bit encoding (Little-Endian)
UnicodeBig - the Unicode 16-bit encoding (Big-Endian)
@<ttable> - <ttable> means a raw InterSystems character translation table name. A prefix of '@' means to use the named table.

Property methods: CharsetDisplayToLogical(), CharsetGet(), CharsetIsValid(), CharsetLogicalToDisplay(), CharsetLogicalToOdbc(), CharsetNormalize()
property ConfirmComplete as %Integer (DISPLAYLIST = ",None,Size,Rename,Size & Rename", VALUELIST = ",0,1,2,3") [ InitialExpression = "1" ];
Confirm complete receipt of file if possible, in case it is not completely available on the server at the time downloading begins.

'None' offers the fastest performance for small files because no extra FTP directory listing needs to be retrieved for each file download attempt

'Size' means keep reading more data for a file until the file size reported by the server directory listing does not increase
This option is only reliable for Charset='binary' transfers (In text mode the file position used for downloading may get corrupted by the insertion or removal of Linefeed characters)
This option alone may not be sufficient if the FTP server or source application is sluggish. If the server reports the same
size for the file 2 times in a row, 2 seconds apart, then Ensemble will consider the download complete. Therefore the 'Size & Rename' setting is preferable if the server supports 'Rename'.
This option relies on correct results from the Adapter.SizeExpression string set in the OnInit() method of the Business Service.

'Rename' means keep trying to read more data for a file until the server allows us to rename it
This option will only work if the FTP server grants Rename privilege to Ensemble for the download directory, using the Credentials
configured on this adapter, and if the file permissions on the file itself are set so that the FTP server has privilege to rename it.
If not then the Rename attempt will always fail and the Ensemble download will never complete

Property methods: ConfirmCompleteDisplayToLogical(), ConfirmCompleteGet(), ConfirmCompleteIsValid(), ConfirmCompleteLogicalToDisplay(), ConfirmCompleteNormalize(), ConfirmCompleteSet()
property DeleteFromServer as %Boolean [ InitialExpression = 1 ];
Specifies whether or not to delete files from the FTP server after successful processing
If not deleted, the adapter will ignore files already processed until something else removes them from the FTP server.
Property methods: DeleteFromServerDisplayToLogical(), DeleteFromServerGet(), DeleteFromServerIsValid(), DeleteFromServerLogicalToDisplay(), DeleteFromServerNormalize(), DeleteFromServerSet()
property FilePath as %String (MAXLEN = 1000) [ Required ];
Directory on the FTP server in which to effect FTP operations.
Property methods: FilePathDisplayToLogical(), FilePathGet(), FilePathIsValid(), FilePathLogicalToDisplay(), FilePathLogicalToOdbc(), FilePathNormalize()
property FileSpec as %String;
Filename or wildcard file specification for file(s) to retrieve from the FTP server
Property methods: FileSpecDisplayToLogical(), FileSpecGet(), FileSpecIsValid(), FileSpecLogicalToDisplay(), FileSpecLogicalToOdbc(), FileSpecNormalize(), FileSpecSet()
property FilenameExpression as %String;
Expression for extracting the filename portion of a line of the FTP directory listing (%line)
Property methods: FilenameExpressionDisplayToLogical(), FilenameExpressionGet(), FilenameExpressionIsValid(), FilenameExpressionLogicalToDisplay(), FilenameExpressionLogicalToOdbc(), FilenameExpressionNormalize(), FilenameExpressionSet()
property IsDirExpression as %String;
Expression for extracting the is-a-directory flag from the FTP directory listing (%line)
Property methods: IsDirExpressionDisplayToLogical(), IsDirExpressionGet(), IsDirExpressionIsValid(), IsDirExpressionLogicalToDisplay(), IsDirExpressionLogicalToOdbc(), IsDirExpressionNormalize(), IsDirExpressionSet()
property ServerListStyle as %String (VALUELIST = ",Unix,MSDOS,AS/400,VMS,VMSAllVersions,NetWare") [ InitialExpression = "Unix" ];
Type of listing format returned by the FTP server.

'VMSAllVersions' means on VMS FTP servers, retrieve all versions listed, not only the latest VMS version of the file
This value is not pertinent if you select SFTP/SSH mode by using the value !SFTP for the SSHConfig setting.

Property methods: ServerListStyleDisplayToLogical(), ServerListStyleGet(), ServerListStyleIsValid(), ServerListStyleLogicalToDisplay(), ServerListStyleLogicalToOdbc(), ServerListStyleNormalize(), ServerListStyleSet()
property SizeExpression as %String;
Expression for extracting the file size from the FTP directory listing (%line); if present used for detecting download complete status
Property methods: SizeExpressionDisplayToLogical(), SizeExpressionGet(), SizeExpressionIsValid(), SizeExpressionLogicalToDisplay(), SizeExpressionLogicalToOdbc(), SizeExpressionNormalize(), SizeExpressionSet()
property StayConnected as %Numeric (MINVAL = -1, VALUELIST = ",0,-1") [ InitialExpression = -1 ];
If zero, disconnect from the remote FTP server between attempts to retrieve a directory listing. A value of -1 means never disconnect.
Property methods: StayConnectedDisplayToLogical(), StayConnectedGet(), StayConnectedIsValid(), StayConnectedLogicalToDisplay(), StayConnectedNormalize(), StayConnectedSet()
property TimestampExpression as %String;
Expression for extracting the timestamp portion of a line of the FTP directory listing (%line)
Property methods: TimestampExpressionDisplayToLogical(), TimestampExpressionGet(), TimestampExpressionIsValid(), TimestampExpressionLogicalToDisplay(), TimestampExpressionLogicalToOdbc(), TimestampExpressionNormalize(), TimestampExpressionSet()
property UseFileStream as %Boolean [ InitialExpression = 0 ];
Should the adapter construct a FileStream or a GlobalStream for data received?
Note that regardless of this setting a FileStream will be used if ArchivePath or ArchiveIO is set.
Property methods: UseFileStreamDisplayToLogical(), UseFileStreamGet(), UseFileStreamIsValid(), UseFileStreamLogicalToDisplay(), UseFileStreamNormalize(), UseFileStreamSet()


classmethod TakeFromCol(s, col)
method delete(pFilename As %String, pFileDir As %String) as %Boolean
method rename(pFilename As %String, pNewFilename As %String, pFileDir As %String) as %Boolean
method retrieveFile(pFilename As %String, pStream As %AbstractStream, pFileDir As %String, pRetry As %Boolean) as %Status
method testPaths(pOnInit As %Boolean = 1) as %Status

Inherited Members

Inherited Properties

Inherited Methods

FeedbackOpens in a new tab