Загрузить каталог файлов с помощью 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\");
}

Но я получаю ошибку компилятора:

Имя "файлы" не существует в текущем контексте

Все, что я исследовал, говорит, что это должно работать.

У кого-нибудь есть хороший способ загрузить каталог файлов через WebClient?

2 ответа

Решение

Вы должны определить и установить files, Если вы хотите загрузить все файлы в определенный локальный каталог, используйте, например, Directory.EnumerateFiles,

Так же address аргумент WebClient.UploadFile должен быть полный 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);
    }
}

Я думаю, что ваша загрузка веб-клиента будет работать нормально. Ваша проблема в том, что ваша переменная files не входит в сферу.

Вы должны опубликовать больше своего кода, чтобы мы могли лучше видеть

Другие вопросы по тегам