Remote Transfer Protocols
Reference for the remote file transfer protocols supported by the Send to Remote feature.
FTP
Standard File Transfer Protocol with optional TLS encryption.
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| Host | Yes | Server hostname or IP address |
| Port | Yes | Server port (default: 21) |
| Username | Yes | FTP username |
| Password | Yes | FTP password |
| Remote Path | No | Upload directory (default: /) |
| Use FTPS | No | Enable Explicit FTPS (TLS encryption) |
FTPS (Explicit TLS)
When FTPS is enabled, the connection starts as plain FTP on port 21 and upgrades to TLS using the AUTH TLS command. This is also known as Explicit FTPS (FTPES).
Implementation Notes
- Uses the FluentFTP library.
- The remote directory is created automatically if it does not exist.
SFTP
SSH File Transfer Protocol — encrypted file transfer over SSH.
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| Host | Yes | Server hostname or IP address |
| Port | Yes | Server port (default: 22) |
| Username | Yes | SSH username |
| Password | Yes | SSH password |
| Remote Path | No | Upload directory (default: /) |
Implementation Notes
- Uses the SSH.NET library.
- The remote directory is created automatically if it does not exist.
- Password authentication only (key-based authentication is not currently supported).
WebDAV
HTTP-based file transfer protocol. Compatible with NextCloud, ownCloud, Apache mod_dav, and other WebDAV servers.
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| Host | Yes | Server URL (e.g., https://cloud.example.com/remote.php/dav/files/user/) |
| Port | Yes | Server port (default: 443) |
| Username | Yes | WebDAV username |
| Password | Yes | WebDAV password |
| Remote Path | No | Upload subdirectory (default: /) |
Implementation Notes
- Uses the built-in
HttpClient. - Directories are created with the WebDAV
MKCOLmethod before upload. - The
PUTmethod is used for file upload.
S3-Compatible
Amazon S3 and S3-compatible object storage services (MinIO, Wasabi, Backblaze B2, DigitalOcean Spaces, etc.).
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| Bucket Name | Yes | S3 bucket name |
| Access Key | Yes | AWS access key ID or equivalent |
| Secret Key | Yes | AWS secret access key or equivalent |
| Region | Yes | AWS region (default: us-east-1) |
| Service URL | No | Custom endpoint URL for non-AWS providers |
| Remote Path | No | Key prefix / folder path (default: /) |
Non-AWS Providers
For S3-compatible services, set the Service URL to the provider’s endpoint:
| Provider | Service URL Example |
|---|---|
| MinIO | http://minio.local:9000 |
| Wasabi | https://s3.wasabisys.com |
| Backblaze B2 | https://s3.us-west-002.backblazeb2.com |
| DigitalOcean Spaces | https://nyc3.digitaloceanspaces.com |
Implementation Notes
- Uses the AWS SDK for .NET (AWSSDK.S3).
- When a custom Service URL is provided,
ForcePathStyleis enabled for compatibility with non-AWS services.
Google Drive
Upload files to Google Drive using the Google Drive API v3.
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| OAuth Access Token | Yes | A valid OAuth 2.0 access token with drive.file or drive scope |
| Folder ID | No | Google Drive folder ID to upload into (default: root — the user’s top-level My Drive) |
| Remote Path | No | Not used directly; the folder ID determines the upload location |
Obtaining an OAuth Token
Generate an access token through the Google OAuth 2.0 Playground or your own OAuth application. The token must have the https://www.googleapis.com/auth/drive.file scope at minimum.
Implementation Notes
- Uses the Google Drive REST API v3 multipart upload endpoint.
- File metadata (name and parent folder) is sent alongside the file content in a single multipart request.
- No additional NuGet packages are required; uploads use the built-in
HttpClient.
Dropbox
Upload files to Dropbox using the Dropbox API v2.
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| OAuth Access Token | Yes | A valid Dropbox OAuth 2.0 access token |
| Remote Path | No | Upload directory path in Dropbox (default: /) |
Obtaining an OAuth Token
Generate an access token from the Dropbox App Console or use the Dropbox OAuth 2.0 flow.
Implementation Notes
- Uses the Dropbox content upload endpoint (
https://content.dropboxapi.com/2/files/upload). - Upload metadata is passed via the
Dropbox-API-ArgHTTP header. - Existing files at the same path are overwritten.
- No additional NuGet packages are required; uploads use the built-in
HttpClient.
OneDrive
Upload files to Microsoft OneDrive using the Microsoft Graph API.
Connection Parameters
| Parameter | Required | Description |
|---|---|---|
| OAuth Access Token | Yes | A valid Microsoft Graph OAuth 2.0 access token with Files.ReadWrite scope |
| Remote Path | No | Upload path relative to the root of the user’s OneDrive (default: /) |
Obtaining an OAuth Token
Generate an access token through the Microsoft Graph Explorer or register an application in the Azure Portal. The token must have the Files.ReadWrite permission.
Implementation Notes
- Uses the Microsoft Graph API simple upload endpoint (
PUT /me/drive/root:/{path}:/content). - Suitable for files up to the 2 GB limit. For larger files, the resumable upload session API would be required.
- Existing files at the same path are overwritten.
- No additional NuGet packages are required; uploads use the built-in
HttpClient.
Common Limits
| Setting | Value |
|---|---|
| Maximum file size | 2 GB |
| Connection timeout | 30 seconds |
| Progress reporting | Per-file status updates |
| Cancellation | Supported via cancel button |