如何用c#下载文件名?

时间:2014-08-03 13:02:52

标签: c# webclient downloadfile

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

如何保留文件名在URL中?

抱歉我的英文

3 个答案:

答案 0 :(得分:3)

如果我理解你的问题,这应该有效:

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));

如果您无法控制网址本身,则可能需要对其进行一些验证,例如:正则表达式。

答案 1 :(得分:0)

我建议使用函数Path.GetFileName():

,而不是解析url
string uri = "http://yourserveraddress/fileName.txt";
string fileName = System.IO.Path.GetFileName(uri);
WebClient client = new WebClient();
client.DownloadFile(uri, fileName);

答案 2 :(得分:0)

那:

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

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