Basic Download and Upload with FTP and SFTP components

In release R1 2012, we introduced new API for uploading and downloading multiple files. In this blog post, we are going to explain how to use the new Download and Upload methods. The usage is illustrated on the Download method, but the same principles can be applied for Upload as well.

In the following examples, client is an instance of either Ftp or Sftp object*:

Sftp client = new Sftp();
client.Connect(server, port);
client.Login(username, password);

Let's consider following directory structure on the server:

/data/web/page1.html
/data/web/page2.html
/data/web/images
/data/web/images/image1.jpeg
/data/web/images/image2.jpeg

1) Download a single file

To download the "/data/web/page1.html" file into "C:\data", do this:

client.Download("/data/web/page1.html", @"C:\data");

This will download the file into:

C:\data\page1.html

2) Download directory with its content

If you want to download the directory "/data/web" with all its content (including "images" subdirectory), you can simply write:

client.Download("/data/web", @"C:\data");

This will create this local structure:

C:\data\web\page1.html
C:\data\web\page2.html
C:\data\web\images\
C:\data\web\images\image1.jpeg
C:\data\web\images\image2.jpeg

The whole directory "web" is downloaded into "C:\data".

3) Download only the contents of a directory

If you want to transfer only the contents of directory "/data/web" directly into "C:\data", without creating the directory "web" locally, you can do it easily like this:

client.Download("/data/web/*", @"C:\data");

Local structure will be:

C:\data\page1.html
C:\data\page2.html
C:\data\images\
C:\data\images\image1.jpeg
C:\data\images\image2.jpeg

Note: The "* **" wildcard stands for any file or directory name, so "/data/web/ *" means any file or directory from "/data/web" directory.

To learn how to filter specific files/directories only, please visit our Advanced Download and Upload with SFTP and FTP components blog post. We also discuss usage of wildcards and the optional TraversalMode argument there.

*Our Rebex ZIP component also offers the new multi-file API. The ZipArchive.Add and ZipArchive.Extract methods can be used in the same way as Ftp/Sftp Upload and Download methods respectively.