使用 WebClient 将文件目录上传到 FTP 服务器

Upload directory of files to FTP server using WebClient

我找了又找,找不到办法。我在要上传的目录中有文件。文件名不断变化,所以我无法按文件名上传。这是我试过的。

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\");
}

但是我遇到编译器错误:

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

我研究过的所有内容都表明这应该有效。

有没有人有通过WebClient上传文件目录的好方法?

我认为您的 Web 客户端上传可以正常工作。您的问题是您的变量 files 不在范围内。

您需要post更多的代码,这样我们才能看得更清楚

您必须定义和设置 files。如果您想上传某个本地目录中的所有文件,例如使用 Directory.EnumerateFiles.

此外,WebClient.UploadFileaddress 参数必须是目标文件的完整 URL,而不仅仅是目标目录的 URL。

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);
    }
}

有关递归上传,请参阅:
Recursive upload to FTP server in C#