Виняток: “Формати URI не підтримуються”


89

У мене є абсолютний локальний шлях, який вказує на папку: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Але коли я намагаюся кинути це DirectoryInfo ctor, я отримую виняток "Формати URI не підтримуються".

Я гуглив і дивився на SO, але бачу рішення лише з віддаленими шляхами, а не локальними. Я очікував би якогось методу перетворення ...

Відповіді:


189
string uriPath =
    "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj";
string localPath = new Uri(uriPath).LocalPath;

3
Приємно! У мене була така сама проблема, і я погуглив як божевільний, це чудово працювало.
Джеремі Морган,

Хоча це рішення, яке працює часто, є лише один випадок, коли він не вдається. Якщо місцезнаходження містить #, тоді локальний шлях буде йти лише до цієї позиції. Наприклад, якщо ваш шлях до файлу: /// C: /foo/bar#/test.jpg, тоді ви отримаєте C: / foo / bar замість того, що ви насправді хочете.
DokutoMekki

2
Привіт. Я хочу, щоб файл був присутній на веб-сайті www.xxx.com/sitemap.xml. Це працює на localhost, але на сервері такого каталогу немає. Як можна в такому випадку сортувати речі?
Це пастка

@ Itatrap Можливо, ви шукаєте Server.MapPath .
Ендрю Мортон,

але після використання вашого шляху я створюю все більше папки всередині і не створюю каталог. подивіться stackoverflow.com/questions/63493899/…
hud

1

Спробуйте це

ImagePath = "http://localhost/profilepics/abc.png";
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ImagePath);
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream receiveStream = response.GetResponseStream();


0
     string ImagePath = "";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ImagePath);
        string a = "";
        try
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            Stream receiveStream = response.GetResponseStream();
            if (receiveStream.CanRead)
            { a = "OK"; }
        }

        catch { }

1
Хоча цей код може вирішити питання, включаючи пояснення того, як і чому це вирішує проблему, справді допомогло б поліпшити якість вашої публікації, і, можливо, призведе до більшої кількості голосів. Пам’ятайте, що ви відповідаєте на запитання читачам у майбутньому, а не лише тому, хто задає зараз. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються.
Artog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.