如何在c#中从url获取真实的文件名

本文关键字:获取 真实 文件名 url 中从 | 更新日期: 2023-09-27 18:17:26

我想从下载管理器应用程序的url获取文件名。我知道使用Uri.AbsolutePathPath.GetFileName来获得它,但这些方法对某些url不能给出好的结果。

例如,在这个链接中,实际名称是WinRAR 5.40 Final TR.zip,但Path.GetFileName给出它为zjESdHoqm?Key = 035db62f2375981abf055c615955812a72d5f2701 是一个陌生的名字。

这个链接也没有重定向。它直接包含文件。所以我想问,是否有一个确切的方法来获得正确的文件名在c# ?

更新:我已经计算出链接过期。很抱歉。但我找不到其他URL来解释我的问题。

如果你想测试我的问题,你可以从这个页面更新url。

如何在c#中从url获取真实的文件名

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

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

最后,文件名是正确的。谢谢大家的帮助。

你的链接坏了(404),但你可以看看这个:https://msdn.microsoft.com/en-us/library/system.uri.absolutepath.aspx

Request.Url.AbsolutePath

AbsolutePath属性包含路径信息服务器用来解析对信息

的请求