我尝试使用WebClient
从URL下载文件,问题是需要URL的函数.DownloadFile()
以及将被提供给已保存文件的名称,但是当我们访问时它已经有了文件名。
如何保留文件名在URL中?
抱歉我的英文
答案 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():
,而不是解析urlstring 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的扩展方法。