Избегайте загрузки с локального ресурса с действительным URI. URI с неявным или явным путем к файлу - PullRequest
2 голосов
/ 23 января 2020

Использование Система. Net .WebClient.DownloadFile Метод. Я могу скачать файл с указанного URI.

Моя проблема заключается в том, что URI может быть направлен на действительный локальный файл:

  • "C: / Directory / FileName.ext"
  • ". ./../Directory/FileName.ext"

Я хотел бы, чтобы путь к этим файлам был либо недействительным URI, либо чтобы WebClient был доступен только для Http / Ftp.

foreach(var link in inputs){
    Download(link)
}

void Download(string source)
{
    var uri = new URI(source);

    //Stop me from downloading from local file

    var response = webClient.DownloadData(uri); 
}

1 Ответ

1 голос
/ 30 января 2020

Вы можете взглянуть на свойство Схема Uri.

Это:

  • Является ли строка http для сборки URI с путями типа http://www.test.com/index.html
  • Является ли строка file для сборки URI с такими путями, как c:\test.txt
  • Броски InvalidOperationException для относительных URI

С С помощью свойства IsAbsoluteUri вы можете отфильтровать URI следующим образом:

var scheme = uri.IsAbsoluteUri ? uri.Scheme : null; // can be put in a SchemeOrNull extension method
if (acceptedSchemes.Contains(scheme))  // acceptedSchemes contains "http", "ftp", ..
{
  ...
...