如何在c#中下载带有文件名的文件

本文关键字:文件名 文件 下载 | 更新日期: 2023-09-27 18:16:22

我试图使用WebClient从URL下载文件,问题是.DownloadFile()函数需要URL,并将给保存的文件命名,但是当我们访问URL时,它已经有了文件名。

我如何保持文件名,因为它是在URL?

如何在c#中下载带有文件名的文件

如果我正确理解你的问题,这应该可以工作:

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.

不解析url,我建议使用函数Path.GetFileName():

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

怎么样:

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

注意: Last()是Linq的扩展方法。