Brad Jarrett
Brad Jarrett

Reputation: 109

Upload directory of files to FTP server using WebClient

I have searched and searched and cannot find a way to do this. I have files in a directory I want to upload. The file names change constantly so I cannot upload by file name. Here is what I have tried.

using (WebClient client = new WebClient())
{
    client.Credentials = new NetworkCredential("User", "Password");
    foreach (var filePath in files)
        client.UploadFile("ftp://site.net//PICS_CAM1//", "STOR", @"PICS_CAM1\");
}

But I am getting a compiler error:

The name 'files' does not exist in the current context

Everything I have researched says this should work.

Does anyone have a good way to upload a directory of files via WebClient?

Upvotes: 2

Views: 9129

Answers (2)

Martin Prikryl
Martin Prikryl

Reputation: 202474

You have to define and set the files. If you wanted to upload all files in a certain local directory, use for example Directory.EnumerateFiles.

Also the address argument of WebClient.UploadFile has to be a full URL to a target file, not just a URL to a target directory.

IEnumerable<string> files = Directory.EnumerateFiles(@"C:\local\folder");

using (WebClient client = new WebClient())
{
    client.Credentials = new NetworkCredential("username", "password");

    foreach (string file in files)
    {
        client.UploadFile(
            "ftp://example.com/remote/folder/" + Path.GetFileName(file), file);
    }
}

For a recursive upload, see:
Recursive upload to FTP server in C#

Upvotes: 4

Andrew
Andrew

Reputation: 770

I think your web client upload will work fine. Your issue is that your variable files is not in scope.

You need to post more of your code so we can see better

Upvotes: 0

Related Questions