Получить имена файлов по URL Directory в приложении WinService или WinForms - PullRequest
1 голос
/ 12 декабря 2011

У меня есть служба win, которая должна загружать все zip-файлы по URL (например, http://download.geonames.org/export/dump/), но когда я использую метод Directory.GetFiles или DirectoryInfo di = new DirectoryInfo(ConfigurationManager.AppSettings["GeoFullDataURLPath"]), я получаю сообщение об ошибке:

Форматы URI не поддерживаются.

Как я могу решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 12 декабря 2011

Вы не можете использовать Directory.GetFiles в URL.

Рассмотрим следующий пример:

 WebClient webClient = new WebClient();
 webClient.DownloadFile("http://download.geonames.org/export/dump/file.zip", "new-file.zip");

Это загрузит файл file.zip с указанного выше URL.

Списки каталогов через Интернет обычно блокируются из соображений безопасности,

EDIT: См это

2 голосов
/ 12 декабря 2011

Вы должны сделать веб-запрос. DirectoryInfo предназначен только для локальных дисков и SMB-ресурсов. Это должно сработать: http://www.csharp -examples.net / download-files /

1 голос
/ 12 декабря 2011

Полный исходный код для выполнения этой задачи:

string
    storeLocation = "C:\\dump",
    fileName = "",
    baseURL = "http://download.geonames.org/export/dump/";

WebClient r = new WebClient();            
string content = r.DownloadString(baseURL);
foreach (Match m in Regex.Matches(content, "<a href=\\\"[^\\.]+\\.zip\">"))
{
    fileName = Regex.Match(m.Value, "\\w+\\.zip").Value;
    r.DownloadFile(baseURL + fileName, Path.Combine(storeLocation, fileName));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...