<< Back to tutorials

Quick Storage API in C# with the SFTP protocol

Published {$created} by Carsten Blum


With C#, you can easily create a simple Storage API by using SFTP to connect to ftpGrid. This tutorial shows you how to generate a text file and upload it to your ftpGrid account using the SSH.NET (Renci.SshNet) library. The code works on macOS, Linux, and Windows.


Prefer hands-on over reading tutorials? ftpGrid is built to be intuitive — create a free account and get started instantly.


It is recommended to read our getting started with FTP/SFTP guide to create your account. To read more in-depth about ftpGrid managed FTP/SFTP cloud hosting checkout our guide to ftpGrid's cloud hosting. Finally, if you need help creating SSH keys, follow our SSH key creation tutorial.

Requirements

  • .NET 6 or later (cross-platform)

  • SSH.NET NuGet package (dotnet add package SSH.NET)

  • An ftpGrid account with SFTP access

  • I use Mac or Linux for development, so the tutorial is targeted towards those *Nix platforms, but will work on Windows

Step 1: Create a new C# console project

#Install dotnet on MacOS
brew install dotnet

#If using Debian, or similar, follow this dotnet installation guide
#Follow this guide: https://learn.microsoft.com/en-us/dotnet/core/install/linux-debian?tabs=dotnet9

#Prepare you storage tutorial project
dotnet new console -n StorageApiTutorial
cd StorageApiTutorial
dotnet add package SSH.NET

Step 2: Create boilerplate and create a test file

Inside Program.cs, create the boilerplate code:

// ftpGrid C# storage API tutorial using SFTP

using System;
using System.IO;
using Renci.SshNet;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Creating hello.txt test file.");
        File.WriteAllText("hello.txt", "Hello from C# and ftpGrid!");
    }
}

Step 3: Setup ftpGrid credentials

In the main method add parameters for ftpGrid edge connection.

string host = "edge1.ftpgrid.com";
int port = 22;
string username = "PREFIX.username";
string password = "password";

Step 4: Connect to ftpGrid with SSH.NET

In the main method add the actual connection and upload in a using block

using (var client = new SftpClient(host, port, username, password))
{
    client.Connect();
    Console.WriteLine("Connected to ftpGrid via SFTP");

    // Ensure /uploads directory exists
    if (!client.Exists("/uploads"))
    {
        client.CreateDirectory("/uploads");
        Console.WriteLine("Created remote directory /uploads");
    }

    // Upload file
    using (var fileStream = new FileStream("hello.txt", FileMode.Open))
    {
        client.UploadFile(fileStream, "/uploads/hello.txt");
        Console.WriteLine("Uploaded hello.txt to /uploads");
    }
         
    client.Disconnect();
}

Step 5: Run the program

Run the program in the terminal, this is the expected output:

# dotnet run
Creating hello.txt sample file.
Connected to ftpGrid via SFTP
Uploaded hello.txt to /uploads
#

The complete sample code

This is the complete sample code used in this tutorial

// ftpGrid C# storage API tutorial using SFTP

using System;
using System.IO;
using Renci.SshNet;

class Program
{

    static void Main(string[] args)
    {
        string host = "edge1.ftpgrid.com";
        int port = 22;
        string username = "PREFIX.username";
        string password = "password";

        Console.WriteLine("Creating hello.txt sample file.");
        File.WriteAllText("hello.txt", "Hello from C# and ftpGrid!");

        using (var client = new SftpClient(host, port, username, password))
        {
            client.Connect();
            Console.WriteLine("Connected to ftpGrid via SFTP");

            // Ensure /uploads directory exists
            if (!client.Exists("/uploads"))
            {
                client.CreateDirectory("/uploads");
                Console.WriteLine("Created remote directory /uploads");
            }

            // Upload file
            using (var fileStream = new FileStream("hello.txt", FileMode.Open))
            {
                client.UploadFile(fileStream, "/uploads/hello.txt");
                Console.WriteLine("Uploaded hello.txt to /uploads");
            }

            client.Disconnect();
        }
    }
}

Conclusion

In just a few lines of C# code, you connected to ftpGrid via SFTP and uploaded a file.This shows how easily you can use ftpGrid as a Storage API in .NET projects.


From here, you can:

  • Automate file backups from your apps

  • Upload logs or reports

  • Integrate secure cloud storage into your existing .NET solutions

Try it yourself, and experience how ftpGrid makes cloud storage simple for C# developers. If you haven't done so already, create your account today.



Free signup
© 2025 ftpGrid

ftpGrid ApS
Branebjerg 24
DK-5471
Gamby
Denmark

Looking for an all-in-one time tracking, timesheet, and invoicing solution - visit our Devanux sister company Nureti at https://nureti.com.

Preview Devanux’s upcoming project Pictoguide – a visual support tool designed to bring structure and clarity to people with ASD.