
FTP (File Transfer Protocol) Upload
CertifiedUpload a file to FTP
FTP (File Transfer Protocol) Upload
Upload a file to FTP
Pushes one local file to the remote path. Defaults: port 21, passive mode on, remote IP verification on, paths relative to user home.
type: io.kestra.plugin.fs.ftp.UploadExamples
id: fs_ftp_upload
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: upload
type: io.kestra.plugin.fs.ftp.Upload
host: localhost
port: 21
username: foo
password: "{{ secret('FTP_PASSWORD') }}"
from: "{{ inputs.file }}"
to: "/upload/dir2/file.txt"
Installation
Our standard Docker images already include this plugin. If you use a -slim image or another setup, install it with the following command:
kestractl plugins get io.kestra.plugin:plugin-fs --compatible-for $KESTRA_VERSION For kestractl, use your Kestra version with --compatible-for, or specify an exact plugin version.
For Kestra CLI, replace LATEST with a specific version or version range to pin the plugin version.
Properties
from *string
Source file (kestra:// URI)
Pebble expression referencing an Internal Storage URI e.g. {{ outputs.mytask.uri }}.
host *string
Remote host
assets
Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
io.kestra.core.models.assets.AssetsDeclaration
IGNOREFAILWARNAsset failure behavior
Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.
Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
The assets consumed as inputs.
io.kestra.core.models.assets.AssetIdentifier
1The assets produced as outputs.
io.kestra.plugin.ee.assets.Dataset
1150{}1150io.kestra.plugin.ee.assets.File
1150{}1150io.kestra.plugin.ee.assets.Table
1150{}1150io.kestra.plugin.ee.assets.VM
1150{}1150io.kestra.core.models.assets.External
1150{}1150io.kestra.core.models.assets.Custom
11501Custom asset type
{}1150enableSshRsa1 booleanstring
falseEnable the RSA/SHA1 algorithm (disabled by default)
options
{
"connectionTimeout": "PT30S",
"dataTimeout": "PT30S",
"socketTimeout": "PT30S",
"controlKeepAliveTimeout": "PT30S",
"controlKeepAliveReplyTimeout": "PT30S"
}FTP client options
io.kestra.plugin.fs.ftp.FtpInterface-Options
PT30SControl connection timeout
Maximum time to open the control channel. Default 30s.
PT30SKeep-alive reply timeout
How long to wait for keep-alive responses before failing. Default 30s.
PT30SControl keep-alive interval
Sends keep-alive commands during long transfers. Default 30s.
PT30SData channel timeout
Maximum time to open the data socket. Default 30s.
PT30SSocket read timeout
Timeout for socket reads and writes once connected. Default 30s.
overwrite booleanstring
trueOverwrite existing files
If false, fails when the destination already exists.
passiveMode booleanstring
trueUse passive data connections
Passive mode avoids most firewall and NAT issues and is enabled by default (true). Set to false to force active mode.
password string
Password
port string
21Remote port
proxyHost string
FTP proxy hostname
proxyPort string
FTP proxy port
proxyType string
DIRECTHTTPSOCKSFTP proxy type
remoteIpVerification booleanstring
trueVerify data channel IP
Ensures the responding server IP matches the control connection to prevent spoofed data channels.
rootDir booleanstring
trueTreat path as user home root
If true (default), remote paths are resolved relative to the authenticated user's home directory.
to string
Destination path
If unset, uses the source filename.
username string
Username
Outputs
from string
uriThe fully-qualified URIs that point to source data
to string
uriThe fully-qualified URIs that point to destination path