Как скачать файл в C# с его именем?

Я пытаюсь скачать файл с URL, используя WebClientпроблема в том что функция .DownloadFile() требуется URL-адрес и имя, которое будет присвоено сохраненному файлу, но когда мы получаем доступ к URL-адресу, он уже имеет имя файла.

Как я могу сохранить имя файла, как оно есть в URL?

Извините за мой английский

2 ответа

Решение

Вместо анализа URL я предлагаю использовать функцию Path.GetFileName():

string uri = "http://yourserveraddress/fileName.txt";
string fileName = System.IO.Path.GetFileName(uri);
WebClient client = new WebClient();
client.DownloadFile(uri, fileName);

Это должно работать, если я правильно понимаю ваш вопрос:

private string GetFileNameFromUrl(string url)
{
    if(string.IsNullOrEmpty(url))
        return "image.jpg"; //or throw an ArgumentException

    int sepIndex = url.LastIndexOf("/");

    if(sepIndex == -1)
        return "image.jpg"; //or throw an ArgumentException

    return url.Substring(sepIndex);
}

Тогда вы можете использовать это так:

string uri = "http://www.mywebsite.com/res/myimage.jpg";
WebClient client = new WebClient();
client.DownloadFile(uri, this.GetFileNameFromUrl(uri));

Если у вас нет контроля над самим URL-адресом, вы можете проверить его, например, Regex.

Что о:

string url = "http://www.mywebsite.com/res/myimage.jpg?guid=2564";
Uri uri = new Uri(url);
string fileName = uri.Segments.Last();

Примечание. Last() - это метод расширения от Linq.

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