> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FTP

> Provides access through the File Transfer Protocol (FTP).

export const FormField = ({property, label, required = false, diType, uiPatterns, children}) => {
  const patterns = Array.isArray(uiPatterns) ? uiPatterns : uiPatterns ? [uiPatterns] : [];
  return <div style={{
    margin: '1.5rem 0'
  }}>
      <div style={{
    display: 'flex',
    alignItems: 'baseline',
    flexWrap: 'wrap',
    gap: '0.5rem',
    marginBottom: '0.25rem'
  }}>
        <strong>{label}</strong>
        <span style={{
    fontSize: '0.7rem',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.04em',
    color: required ? '#6241f5' : '#6b7280'
  }}>
          {required ? 'Required' : 'Optional'}
        </span>
      </div>

      <div>{children}</div>

      {diType || patterns.length > 0 ? <p style={{
    fontSize: '0.85rem',
    color: '#6b7280',
    marginBottom: 0
  }}>
          {diType ? <>
              See the <a href={`/references/${diType}`}>{diType}</a> reference.{' '}
            </> : null}
          {patterns.length > 0 ? <>
              Accepts a <a href={`/documentation/placeholders-and-patterns/patterns#${patterns[0]}`}>pattern</a>.
            </> : null}
        </p> : null}
    </div>;
};

Connect Alumio to an FTP server and use it like a filesystem: read files from it and write files to it. Use this whenever a task needs to exchange files with a system that offers an FTP server, for example picking up incoming order files or dropping off exports.

This documentation describes: [Schema](/schemas/filesystem/ftp)

## Fields

### General

<FormField property="host" label="Hostname" required>
  The address of the FTP server, for example `ftp.example.com`.
</FormField>

<FormField property="port" label="Port">
  The port the FTP server listens on. Defaults to `21`, the standard FTP port. Only change this if your server uses a different port.
</FormField>

<FormField property="username" label="Username" required>
  The username of the FTP account Alumio signs in with.
</FormField>

<FormField property="password" label="Password">
  The password that goes with the username. Keep this confidential.
</FormField>

### Advanced

<FormField property="root" label="Remote root directory">
  The folder on the server that all reads and writes are relative to, so you do not have to repeat it in each path. Leave empty to use the server's default starting directory.
</FormField>

<FormField property="timeout" label="Connection timeout">
  How long, in seconds, Alumio waits for the server to respond before giving up. Can range from 0 to 600, and defaults to `90`.
</FormField>

<FormField property="ignorePassiveAddress" label="Ignore passive IP address">
  Turn this on if file actions fail after the connection switches to passive mode. It tells Alumio to keep using the server's main address rather than the one the server hands back for passive transfers, which helps when the server sits behind a firewall or router.
</FormField>

<FormField property="ssl" label="Enable SSL">
  Encrypts the connection to the server (FTPS). Off by default. Turn it on when your server requires a secure connection.
</FormField>

<FormField property="logger" label="Logger" diType="filesystem-logger">
  Selects how file activity on this connection is recorded, so you can trace which files were read or written.
</FormField>

## Sample data

A connection to an FTP server, reading and writing within the `inbound` folder.

| Field                 | Value             |
| --------------------- | ----------------- |
| Hostname              | `ftp.example.com` |
| Username              | `your-username`   |
| Password              | `your-password`   |
| Remote root directory | `inbound`         |

```json Configuration theme={null}
{
  "prototype": "ftp",
  "parameters": {
    "host": "ftp.example.com",
    "username": "your-username",
    "password": "your-password",
    "root": "inbound"
  }
}
```
