Skip to main content

Description

FTP (File Transfer Protocol) is a standard network protocol for transferring files between a client and server. This component allows uploading, downloading, moving, and deleting files on an FTP or FTPS server.

A common integration pattern involves listing files in a file store, and performing a series of actions on the array of files that are returned. See the looping over files quickstart for information about how to create a loop over an array of files.

Connections

Basic Authentication

key: basic

This component supports basic authentication, meaning that a username and password can be entered for authentication, or if the FTP server allows anonymous access, those values can be left blank.

Prerequisites

  • An FTP or FTPS server with accessible credentials
  • Server hostname or IP address
  • Port number (typically 21 for FTP or 990 for FTPS)
  • SSL/TLS configuration details (if using FTPS)

Configure the Connection

Create a connection of type Basic Authentication and configure the following:

  • Username: Enter the FTP username (leave blank for anonymous access)
  • Password: Enter the FTP password (leave blank for anonymous access)
  • Host: Enter either an IP address (e.g. 1.2.3.4) or FQDN (e.g. ftp.example.com) for the FTP server's host name
  • Port: Most FTP servers run on port 21 and most FTPS (secure) servers run on port 990, though ports are configurable and server administrators can choose to operate on different ports
  • Secure: Some FTP servers use FTPS rather than plain FTP. For plain, unsecured FTP, select false (though encrypting the connection is recommended if possible). If the FTP server uses SSL/TLS, select true for explicit FTPS or implicit for implicit FTPS. For information on implicit and explicit FTPS, see this documentation

If the connection fails, verify the hostname, port and security information with the server administrator.

On-prem enabled: this connection can be configured to connect to an on-prem resource on a private network. Learn more.

InputNotesExample
Host

The address of the FTP server. This should be an IP address or hostname.

ftp.example.com
Ignore SSL Errors

When true, ignores SSL certificate validation errors such as self-signed certificates.

false
Password

The password for FTP authentication.

p@s$W0Rd
Port

The port of the FTP server. Default is 21 for FTP or 990 for implicit FTPS.

21
Secure

Whether to use FTPS over TLS. Set to 'true' for explicit FTPS, 'false' for plain FTP, or 'implicit' for legacy implicit FTPS.

false
Username

The username for FTP authentication.

john.doe

Triggers

New or Modified Files

Checks for new and modified files in a directory on an FTP server on a configured schedule. | key: newOrModifiedFiles

InputNotesExample
Connection

The FTP connection to use.

Include Subdirectories

When true, recursively monitors files in all subdirectories. When false, only monitors files in the specified directory.

false
Path

The directory path on the FTP server to monitor for new or modified files.

/path/to/directory
Pattern

A glob-style pattern to filter files by name. Use wildcards like .csv or report_.txt to match specific file types or naming conventions.

*.csv

This trigger polls an FTP server for new and modified files on a scheduled basis.

The trigger checks for:

  • New files: Files that did not exist in the previous poll
  • Modified files: Files whose modification timestamp or size has changed since the last poll

How It Works

  1. The trigger runs on the configured schedule (e.g., every 5 minutes)
  2. It lists all files in the specified directory on the FTP server
  3. Files are compared against the previous poll's file map (stored in state)
  4. Files are categorized as "new" or "modified" based on their presence and attributes
  5. The trigger updates its state with the current file map for the next poll

Returned Data

The trigger returns an object with two arrays.

Fields shown are representative. The full response object includes additional properties.

Example Payload
{
"data": {
"newFiles": [
{
"path": "/uploads/incoming/report-2026-02-11.csv",
"size": 24576,
"modifiedAt": 1739308800000
}
],
"modifiedFiles": [
{
"path": "/uploads/incoming/daily-log.txt",
"size": 102400,
"modifiedAt": 1739312400000
}
]
}
}

Notes

  • Files are tracked by path, size, and modification timestamp
  • The first poll will return all files as "new"
  • Polling frequency should balance freshness with server load
  • A common integration pattern involves looping over the returned files to perform actions on each file
Example Payload for New or Modified Files
Loading…

Actions

Create Directory

Creates a new directory. When Include Subfolders is enabled, recursively creates any missing directories in the path. | key: createDirectory

InputNotesExample
Connection

The FTP connection to use.

Path

The directory path on the FTP server to monitor for new or modified files.

/path/to/directory
Include Subfolders

When true, recursively creates any missing directories in the path.

true
Example Payload for Create Directory
Loading…

Delete File

Deletes a file from an FTP server. | key: deleteFile

InputNotesExample
Connection

The FTP connection to use.

Path

The full path of the file on the FTP server to delete.

/path/to/file.txt

List Directory

Lists the contents of a directory. | key: listDirectory

InputNotesExample
Connection

The FTP connection to use.

Path

The full path of the directory on the FTP server to list.

/path/to/directory
Example Payload for List Directory
Loading…

Move File

Moves a file on an FTP server. | key: moveFile

InputNotesExample
Connection

The FTP connection to use.

Destination Path

The new path where the file will be moved on the FTP server.

/my/destination/path.txt
Source Path

The current path of the file on the FTP server to move.

/my/starting/path.txt

Read File

Reads a file from an FTP server. | key: readFile

InputNotesExample
Connection

The FTP connection to use.

Path

The full path of the file on the FTP server to read.

/path/to/file.txt
Return Buffer

When true, treats the file as a binary file with content type 'application/octet-stream', even if it is a text file. This is helpful if you are processing non-UTF-8 text files, as the runner assumes text files are UTF-8.

false
Example Payload for Read File
Loading…

Write File

Writes a file to an FTP server. | key: writeFile

InputNotesExample
Connection

The FTP connection to use.

Data

The text or binary data to write to the file on the FTP server.

Path

The full path on the FTP server where the file will be written.

/we/love/commas.csv

Changelog

2026-08-04

Added new action and enhanced file reading:

  • Added Create Directory action to create directories on an FTP server, with optional recursive creation of nested paths
  • Added Return Buffer input to the Read File action to force application/octet-stream content type, useful for non-UTF-8 text files

2026-05-05

Upgraded basic-ftp from 5.0.2 to 5.2.1 to patch CVE-2026-27699 (path traversal vulnerability, CVSS 9.1)

2026-02-24

  • Added New or Modified Files polling trigger that detects new and modified files in a directory on a configured schedule