Как скачать файл в 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.