> For the complete documentation index, see [llms.txt](https://docs.frends.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.frends.com/tasks/tasks/ftp/downloadfiles.md).

# DownloadFiles

Task version: 1.3.0

Required Frends version: 5.1+

Required .NET version: 471, 6.0, standard2.0

Compatible Agents: Legacy, Crossplatform

Source code: <https://github.com/FrendsPlatform/Frends.FTP/tree/main/Frends.FTP.DownloadFiles>

## Task Parameters

{% tabs %}
{% tab title="Source" %}

| Name                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Directory : `String`                    | <p>Directory on the server.</p><p><br>Default: <code>-</code><br>Example: <code>/directory</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| FileName : `String`                     | <p>File name or file mask of the files to be fetched.</p><p><br>Default: <code>-</code><br>Example: <code>example\*.csv</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| NotFoundAction : `SourceNotFoundAction` | <p>What to do if source file is not found. Error = alarm and fail,</p><p>Info = alarm info and quit with success status, Ignore = quit</p><p>with success status.</p><p>Possible values:</p><ul><li><code>Error</code>: What to do if source file is not found. Error = alarm and fail,</li></ul><p>Info = alarm info and quit with success status, Ignore = quit</p><p>with success status.</p><ul><li><code>Info</code>: What to do if source file is not found. Error = alarm and fail,</li></ul><p>Info = alarm info and quit with success status, Ignore = quit</p><p>with success status.</p><ul><li><code>Ignore</code>: What to do if source file is not found. Error = alarm and fail,</li></ul><p>Info = alarm info and quit with success status, Ignore = quit</p><p>with success status.</p><p><br>Default: <code>0</code><br>Example: <code>SourceNotFoundAction.Error</code></p> |
| Operation : `SourceOperation`           | <p>What to do with the source file after transfer.</p><p>Possible values:</p><ul><li><code>Delete</code>: What to do with the source file after transfer.</li><li><code>Rename</code>: What to do with the source file after transfer.</li><li><code>Move</code>: What to do with the source file after transfer.</li><li><code>Nothing</code>: What to do with the source file after transfer.</li></ul><p><br>Default: <code>0</code><br>Example: <code>SourceOperation.Delete</code></p>                                                                                                                                                                                                                                                                                                                                                                                                    |
| FileNameAfterTransfer : `String`        | <p>Parameter for Rename operation. Set the file name for the source file.</p><p><br>Default: <code>-</code><br>Example: <code>%SourceFileName%%SourceFileExtension%</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| DirectoryToMoveAfterTransfer : `String` | <p>Parameter for Move operation. Sets the directory to which source files will be moved after transfer.</p><p><br>Default: <code>-</code><br>Example: <code>/movedFiles</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| {% endtab %}                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |

{% tab title="Destination" %}

| Name                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Directory : `String`         | <p>Directory on the server.</p><p><br>Default: <code>-</code><br>Example: <code>/somedir</code></p>                                                                                                                                                                                                                                                                                                                                                                        |
| FileName : `String`          | <p>File name of the destination file with possible macros.</p><p><br>Default: <code>-</code><br>Example: <code>myFile%Year%.txt</code></p>                                                                                                                                                                                                                                                                                                                                 |
| Action : `DestinationAction` | <p>Operation to determine what to do if destination file exists.</p><p>Possible values:</p><ul><li><code>Append</code>: Operation to determine what to do if destination file exists.</li><li><code>Overwrite</code>: Operation to determine what to do if destination file exists.</li><li><code>Error</code>: Operation to determine what to do if destination file exists.</li></ul><p><br>Default: <code>2</code><br>Example: <code>DestinationAction.Error</code></p> |
| {% endtab %}                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

{% tab title="Connection" %}

| Name                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Address : `String`                     | <p>FTP(S) host address</p><p><br>Default: <code>-</code><br>Example: <code>my.ftp.server.com</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Port : `Int32`                         | <p>Port number to use in the connection to the server.</p><p><br>Default: <code>21</code><br>Example: <code>21</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| UserName : `String`                    | <p>Username to use for authentication to the server. Note that the file endpoint only supports</p><p>username for remote shares and the username must be in the format DOMAIN\Username.</p><p><br>Default: <code>-</code><br>Example: <code>myUsername</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 🗝Password : `String`                  | <p>Password to use in the authentication to the server.</p><p><br>Default: <code>-</code><br>Example: <code>myPassword</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| TransportType : `FtpTransportType`     | <p>Type of transfer: 'Ascii' sends files as text and must only be used for sending ASCII text files. 'Binary' (default) sends files as raw data and should be used for sending e.g. UTF-encoded text files</p><p>Possible values:</p><ul><li><code>Binary</code>: Type of transfer: 'Ascii' sends files as text and must only be used for sending ASCII text files. 'Binary' (default) sends files as raw data and should be used for sending e.g. UTF-encoded text files</li><li><code>Ascii</code>: Type of transfer: 'Ascii' sends files as text and must only be used for sending ASCII text files. 'Binary' (default) sends files as raw data and should be used for sending e.g. UTF-encoded text files</li></ul><p><br>Default: <code>0</code><br>Example: <code>FtpTransportType.Binary</code></p> |
| Mode : `FtpMode`                       | <p>Connection mode to use to connect to the FTP server</p><p>Possible values:</p><ul><li><code>Passive</code>: Connection mode to use to connect to the FTP server</li><li><code>Active</code>: Connection mode to use to connect to the FTP server</li></ul><p><br>Default: <code>0</code><br>Example: <code>FtpMode.Passive</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| KeepConnectionAliveInterval : `Int32`  | <p>Sends NOOP command to keep connection alive at specified time-interval in seconds. If set to 0 the connection is not kept alive. Default value is 0</p><p><br>Default: <code>0</code><br>Example: <code>60</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ConnectionTimeout : `Int32`            | <p>The length of time, in seconds, until the connection times out. You can use value 0 to indicate that the connection does not time out. Default value is 60 seconds</p><p><br>Default: <code>60</code><br>Example: <code>60</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Encoding : `String`                    | <p>If set, this encoding will be used to encode and decode command parameters and server responses, such as file names. Example values: utf-8, utf-16, windows-1252</p><p><br>Default: <code>-</code><br>Example: <code>utf-8</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| BufferSize : `Int32`                   | <p>Integer value of used buffer size as bytes.</p><p>Default value is 4 KB.</p><p><br>Default: <code>4096</code><br>Example: <code>4096</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| UseFTPS : `Boolean`                    | <p>Whether to use FTPS or not.</p><p><br>Default: <code>false</code><br>Example: <code>false</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| SecureDataChannel : `Boolean`          | <p>Whether the data channel is secured or not.</p><p><br>Default: <code>true</code><br>Example: <code>false</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| SslMode : `FtpsSslMode`                | <p>Specifies whether to use Explicit or Implicit SSL</p><p>Possible values:</p><ul><li><code>None</code>: Specifies whether to use Explicit or Implicit SSL</li><li><code>Explicit</code>: Specifies whether to use Explicit or Implicit SSL</li><li><code>Implicit</code>: Specifies whether to use Explicit or Implicit SSL</li><li><code>Auto</code>: Specifies whether to use Explicit or Implicit SSL</li></ul><p><br>Default: <code>0</code><br>Example: <code>FtpsSslMode.None</code></p>                                                                                                                                                                                                                                                                                                           |
| EnableClientAuth : `Boolean`           | <p>If enabled the client certificate is searched from user's certificate store</p><p><br>Default: <code>false</code><br>Example: <code>false</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ClientCertificateName : `String`       | <p>Optional. Enables certification search by name from the certification store of current user.</p><p><br>Default: <code>-</code><br>Example: <code>mycert.crt</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ClientCertificateThumbprint : `String` | <p>Optional. Enables certification search by thumbprint from the certification store of current user.</p><p><br>Default: <code>-</code><br>Example: <code>a909502dd82ae41433e6f83886b00d4277a32a7b</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ValidateAnyCertificate : `Boolean`     | <p>If enabled the any certificate will be considered valid.</p><p><br>Default: <code>false</code><br>Example: <code>false</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ClientCertificatePath : `String`       | <p>Path to client certificate (X509).</p><p><br>Default: <code>-</code><br>Example: <code>c:\example.cer</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| CertificateHashStringSHA1 : `String`   | <p>Certificate SHA1 hash string to validate against.</p><p><br>Default: <code>-</code><br>Example: <code>BA7816BF8F01CFEA414140DE5DAE2223B00361A3</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| {% endtab %}                           |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

{% tab title="Options" %}

| Name                                            | Description                                                                                                                                                                            |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ThrowErrorOnFail : `Boolean`                    | <p>Should an exception be thrown when file transfer fails.</p><p><br>Default: <code>True</code><br>Example: <code>true</code></p>                                                      |
| RenameSourceFileBeforeTransfer : `Boolean`      | <p>Should the destination file be renamed with temporary file name during file transfer as a locking mechanism.</p><p><br>Default: <code>True</code><br>Example: <code>true</code></p> |
| RenameDestinationFileDuringTransfer : `Boolean` | <p>Should the destination file be renamed with temporary file name during file transfer as a locking mechanism.</p><p><br>Default: <code>True</code><br>Example: <code>true</code></p> |
| CreateDestinationDirectories : `Boolean`        | <p>Should the destination directories be created if they do not exist. May not work on all servers.</p><p><br>Default: <code>False</code><br>Example: <code>true</code></p>            |
| PreserveLastModified : `Boolean`                | <p>Should the Last Modified timestamp be preserved from the source.</p><p><br>Default: <code>False</code><br>Example: <code>true</code></p>                                            |
| OperationLog : `Boolean`                        | <p>While enabled all operations logs of executions will be returned with the result.</p><p><br>Default: <code>True</code><br>Example: <code>true</code></p>                            |
| {% endtab %}                                    |                                                                                                                                                                                        |

{% tab title="Info" %}

| Name                       | Description                                                                                                                                                                                                                                           |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| TransferName : `String`    | <p>Optional descriptive name for the transfer.</p><p>Will be included in the file transfer log</p><p>entries and also in all error messages in the event log.</p><p><br>Default: <code>"FTPDownload"</code><br>Example: <code>FTP Download</code></p> |
| WorkDir : `String`         | <p>Directory where temporary files are stored during transfer.</p><p><br>Default: <code>-</code><br>Example: <code>c:\workDir</code></p>                                                                                                              |
| ProcessUri : `String`      | <p>The process URI, use #process.uri</p><p><br>Default: <code>#process.uri</code><br>Example: <code>#process.uri</code></p>                                                                                                                           |
| TaskExecutionID : `String` | <p>Reference to the Task execution id, use #process.executionid</p><p><br>Default: <code>#process.executionid</code><br>Example: <code>#process.executionid</code></p>                                                                                |
| {% endtab %}               |                                                                                                                                                                                                                                                       |
| {% endtabs %}              |                                                                                                                                                                                                                                                       |

## Task Result

| Name                                            | Description                                                                                                                                                                                                 |
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ActionSkipped : `Boolean`                       | <p>True if action was skipped, otherwise false.<br>Example: <code>false</code></p>                                                                                                                          |
| Success : `Boolean`                             | <p>True if the transfer was successful, otherwise false.<br>Example: <code>false</code></p>                                                                                                                 |
| UserResultMessage : `String`                    | <p>Message of the transfer operations containing a simple representation of what happened in the task.<br>Example: <code>1 files transferred: file1.txt</code></p>                                          |
| SuccessfulTransferCount : `Int32`               | <p>Count of files that has been successfully transferred.<br>Example: <code>16</code></p>                                                                                                                   |
| FailedTransferCount : `Int32`                   | <p>Count of files that have not been transferred.<br>Example: <code>2</code></p>                                                                                                                            |
| TransferredFileNames : `IEnumerable<String>`    | <p>List of transferred file names.<br>Example: <code>\[ "file1.txt", "file2.txt" ]</code></p>                                                                                                               |
| TransferErrors : `Dictionary<String, IList`1>\` | <p>Dictionary of file names and errors messages of the failed transfers.<br>Example: <code>{ { "file1.txt", \[ "error1", "error2" ] }, { "file2.txt", \[ "error1", "error2" ] } }</code></p>                |
| TransferredFilePaths : `IEnumerable<String>`    | <p>List of transferred file paths.<br>Example: <code>\[ "C:\dir\file1.txt", "C:\dir\file2.txt" ]</code></p>                                                                                                 |
| OperationsLog : `IDictionary<String, String>`   | <p>Operations logs for the transfer.<br>Example: <code>{ { "2022-05-31 16.21.39.00Z", "operation1" }, { "2022-05-31 16.22.39.00Z", "operation2" }, { "2022-05-31 16.23.39.00Z", "operation3" } }</code></p> |

## Task Changelog

Changelog for Task Frends.FTP.DownloadFiles.

### \[1.3.0] - 2026-04-02

#### Fixed

* Fixed: Added missing changelog and restored redirection to source code.

### \[1.2.0] - 2024-08-23

#### Changed

* Updated the Newtonsoft.Json package to version 13.0.3.

### \[1.1.3] - 2024-01-30

#### Fixed

* Fixed bug when using wildcard filemask and no source files were found.

### \[1.1.2] - 2024-01-16

#### Improved

* Improved Operations log by adding more logging steps.

### \[1.1.1] - 2024-01-04

#### Added

* Added setup for FtpClient.ReadTimeout, FtpClient.DataConnectionConnectTimeout and FtpClient.DataConnectionReadTimeout which were all defaulting to 15 seconds.

### \[1.1.0] - 2023-09-12

#### Added

* Added search for local certificates from machine certification store.
* \[Breaking] Added parameters ClientCertificationName and ClientCertificationThumbprint for exclusive search of client certification.

### \[1.0.4] - 2023-08-08

#### Changed

* Moved client.EncryptionMode setting to be done if UseFTPS is enabled.

### \[1.0.3] - 2022-11-22

#### Changed

* Connection.BufferSize documentation update. Value is set as bytes instead of KBs.
* Removed Connection.ClientCertificatePath's default value.

### \[1.0.2] - 2022-08-25

#### Fixed

* Fixed RestoreModified method to use the whole path of the destination file and not just the name.
* Fixed logging of successful transfer to use the name of the file and not reference of FileItem class.

### \[1.0.1] - 2022-06-15

#### Fixed

* Added DisplayFormat annotation to the Connection ClientCertificatePath input field.

### \[1.0.0] - 2022-06-06

#### Changed

* Initial implementation


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.frends.com/tasks/tasks/ftp/downloadfiles.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
