Blog

BoxLang FTP Support has landed

Luis Majano January 17, 2025

Spread the word

Luis Majano

January 17, 2025

Spread the word


Share your thoughts

We’re excited to announce the release of the bx-ftp module for BoxLang! This powerful module enables seamless interaction between your BoxLang applications and FTP servers. Whether you need to upload files, download content, or manage directories on an FTP server, the bx-ftp module has you covered.

Key Features

  • Open and manage FTP connections effortlessly, even with proxy servers.
  • Perform directory and file operations, including listing, renaming, and removing.
  • Supports secure connections, passive mode, and proxy configurations.
  • Flexible result handling with detailed response metadata.
  • Receive listing results not only as queries, but array of structs

Reporting Issues

If you encounter any issues or have feature requests, please report them to:

Please send us your feedback and testing!

Quick Usage

You can find much more information at the module's readme: https://github.com/ortus-boxlang/bx-ftp and the coming docs page: https://boxlang.ortusbooks.com/boxlang-framework/modularity/ftp

You can leverage the bx:ftp component call in your BoxLang applications. Below are some common usage examples:

Connect to an FTP Server

bx:ftp 
    action="open" 
    connection="myConnection" 
    server="ftp.example.com" 
    username="myuser" 
    password="mypass";

List Directory Contents

bx:ftp 
    action="listdir" 
    connection="myConnection" 
    directory="/" name="results"
    returnType="array";

Download a File

bx:ftp 
    action="getfile" 
    connection="myConnection" 
    remoteFile="/path/to/remote/file.txt" 
    localFile="/path/to/local/file.txt";

Upload a File

bx:ftp 
    action="putfile" 
    connection="myConnection" 
    localFile="/path/to/local/file.txt" 
    remoteFile="/path/to/remote/file.txt";

Close the Connection

bx:ftp action="close" connection="myConnection";

Note: The connection attribute is required for all actions, as it references the active connection managed by BoxLang’s FTPService.

Available Actions

The module supports a wide range of actions categorized into:

Connection Actions

  • open: Open a connection to an FTP server.
  • close: Close an existing connection.

Directory Actions

  • changeDir: Change the current directory.
  • createDir: Create a new directory.
  • existsDir: Check if a directory exists.
  • getCurrentDir: Get the current working directory.
  • listDir: List the contents of a directory.
  • removeDir: Remove a directory.
  • renameDir: Rename a directory.

File Actions

  • removeFile: Remove a file.
  • renameFile: Rename a file.
  • putFile: Upload a file to the server.
  • getFile: Download a file from the server.
  • existsFile: Check if a file exists on the server.

Each action can use a result attribute to store the operation’s outcome in a variable. By default, the results are stored in the bxftp variable (or cftp in CFML compatibility mode).

Example: Working with Results

bx:ftp 
    action="listdir" 
    connection="myConnection" 
    directory="/" 
    result="ftpResult";
assert ftpResult.returnValue.recordCount == 5;

Result Object Keys

  • statusCode: Integer representing the action’s status code.
  • statusText: String describing the action’s status.
  • returnValue: Action-specific return value (if any).
  • succeeded: Boolean indicating whether the action was successful.

CFML Compatibility

For CFML-style functionality, you can integrate the bx-cfml-compat module. This ensures compatibility with Adobe ColdFusion and Lucee.


Start building powerful FTP-enabled applications with BoxLang today! For more details, check out the bx-ftp documentation and stay tuned for more updates.

Add Your Comment

Please provide a comment!
Invalid security code. Please try again.

Recent Entries

BoxLang 1.0.0 RC1 Launched

BoxLang 1.0.0 RC1 Launched

After nearly a year of relentless iteration, rigorous testing, blood, sweat, lots of praying, tears, and over 1,000 resolved tickets, we proudly announce the first Release Candidate (RC1) of BoxLang! With 27 beta versions behind us, we are now on the final stretch toward the official 1.0 release.

Luis Majano
Luis Majano
February 18, 2025
Exploring BoxLang: A Modern Scripting Language for the JVM!

Exploring BoxLang: A Modern Scripting Language for the JVM!

The amazing CFML community leader Ray Camden recently shared his thoughts on BoxLang, a dynamic scripting language that runs on the Java Virtual Machine (JVM). BoxLang is lightweight (only 6 MB) and doesn’t require Java knowledge, making it accessible to developers from all backgrounds. Whether you're building CLI scriptsweb applications, or experimenting with serverless architecture, BoxLang has you covered.

Maria Jose Herrera
Maria Jose Herrera
February 14, 2025
Get a Free BoxLang+ License with Your ITB 2025 Ticket!

Get a Free BoxLang+ License with Your ITB 2025 Ticket!

At Ortus Solutions, we are dedicated to delivering the best experience for our Into the Box attendees. This year’s event will be an exciting opportunity to explore BoxLang and modern CFML development, and we want to ensure that attending in person is even more rewarding.

Maria Jose Herrera
Maria Jose Herrera
February 07, 2025