如何从C#中的URL获取真实文件名?

时间:2016-11-11 00:37:25

标签: c# url filenames

我想从下载管理器应用程序的URL获取文件名。我知道要使用Uri.AbsolutePathPath.GetFileName来获取它,但这些方法不能为某些网址提供良好的结果。

例如,在此link中,realname是 WinRAR 5.40 Final TR.zip ,但Path.GetFileName将其作为 zjESdHoqm?key = 035db62f2375981abf05c615955812a72d5f2701 这是一个奇怪的名字。

此链接也没有重定向。它直接包含文件。所以我想问一下,有没有一种确切的方法可以在C#中获得正确的文件名?

更新:我发现链接已过期。对不起。但我无法通过任何其他网址来解释我的问题。

如果您想测试我的问题,可以从此page续订网址。

2 个答案:

答案 0 :(得分:1)

我自己找到了一个很好的解决方案。

public static string getFileName(string url)
{
   HttpWebRequest req = RequestSender.SendRequest(url);
   HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
   string header_contentDisposition = resp.Headers["content-disposition"];
   string escaped_filename = new ContentDisposition(header_contentDisposition).FileName;

   return Uri.UnescapeDataString(escaped_filename);
}

最后,文件名是正确的。谢谢大家试图帮忙。

答案 1 :(得分:0)

您的链接已损坏(404),但您可能会看到以下内容: https://msdn.microsoft.com/en-us/library/system.uri.absolutepath.aspx

Request.Url.AbsolutePath

  

AbsolutePath属性包含的路径信息   服务器用于解析信息请求