A ThingWorx extension that enables FTP, FTPS, and SFTP file transfers directly from ThingWorx services. Upload files, download files, and list remote directories using a simple configuration table — no scripting of connection logic required.
- FTP — standard file transfer protocol
- FTPS — FTP over TLS/SSL (explicit)
- SFTP — SSH file transfer protocol
- Upload from raw BLOB or directly from a ThingWorx File Repository
- Download files as BLOB
- List remote directory contents with file name, size, and last modified date
- ThingWorx 8.0 or later (tested on 10.1.1)
- Java 8+ on the ThingWorx server
- Download
FTPHandler-1.1.0.zipfrom the Releases page - In ThingWorx Composer go to Import/Export → Import → Extension
- Select the zip and click Import
- After import, restart ThingWorx (required for the extension to fully initialize)
In Composer, create a new Thing and set its Thing Template to FTPConnectionTemplate.
Open the Thing → Configuration tab → ConnectionSettings table and fill in:
| Field | Type | Description | Default |
|---|---|---|---|
host |
STRING | FTP/SFTP server hostname or IP | |
port |
INTEGER | Server port | 21 |
username |
STRING | Login username | |
password |
PASSWORD | Login password | |
protocol |
STRING | FTP, FTPS, or SFTP |
FTP |
passiveMode |
BOOLEAN | Use passive mode (FTP/FTPS only — recommended for cloud) | true |
connectionTimeout |
INTEGER | Connection timeout in milliseconds | 10000 |
All services are available on any Thing based on FTPConnectionTemplate.
List files in a remote directory.
Input:
| Parameter | Type | Description |
|---|---|---|
remotePath |
STRING | Remote directory path (e.g. /files) |
Output: INFOTABLE with fields fileName (STRING), fileSize (LONG), lastModified (DATETIME)
Download a file from the FTP server and return its contents as a BLOB.
Input:
| Parameter | Type | Description |
|---|---|---|
remotePath |
STRING | Remote directory path |
fileName |
STRING | File name to download |
Output: BLOB — raw file bytes
Upload a file to the FTP server. Provide either fileContent (BLOB) or a ThingWorx File Repository source.
Input:
| Parameter | Type | Required | Description |
|---|---|---|---|
remotePath |
STRING | Yes | Remote directory path |
fileName |
STRING | Yes | File name on the remote server |
fileContent |
BLOB | One of these | Raw file bytes — takes precedence if provided |
repositoryName |
STRING | One of these | ThingWorx File Repository Thing name |
repositoryPath |
STRING | One of these | File path within the Repository |
Output: Nothing
Requirements: JDK 8+, Gradle
- Place ThingWorx Extension SDK JARs in
lib/thingworx-sdk/ - Run:
gradlew buildExtension - Output zip will be at
build/extension/FTPHandler-<version>.zip
| Library | Version | License |
|---|---|---|
| Apache Commons Net | 3.9.0 | Apache 2.0 |
| JSch | 0.1.55 | BSD |
Derrick Swint — independently developed and supported, not affiliated with Velotic.