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

Recent Entries

The hidden costs of outdated ColdFusion Apps (And how to fix them)

The hidden costs of outdated ColdFusion Apps (And how to fix them)

Is Your ColdFusion System Quietly Costing You More Than You Think?

Many organizations continue to rely on ColdFusion systems that haven’t been updated in years. While these systems may still be running, they often come with hidden operational, financial, and security costs that can compound over time.

In this article, we’ll explore the true cost of maintaining legacy ColdFusion applications—and how teams can start reducing that burden through ...

Cristobal Escobar
Cristobal Escobar
March 26, 2025
ContentBox v6.1 Released

ContentBox v6.1 Released

In this release, we're thrilled to unveil a series of significant enhancements and upgrades to ContentBox designed to elevate your experience and considerably improve system performance. Our team has focused on integrating the latest CommandBox migrations and ColdBox Core, which ensures that the core system continues to operate with maximum efficiency and stability. This upgrade is part of our ongoing commitment to maintaining a cutting-edge platform that meets the evolving needs of our users.

Luis Majano
Luis Majano
March 19, 2025