【问题标题】:How to get real filename from a url in C#?如何从 C# 中的 url 获取真实文件名?
【发布时间】:2017-03-25 04:20:03
【问题描述】:

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

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

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

更新:我发现链接过期了。对此感到抱歉。但我无法使用任何其他 URL 来解释我的问题。

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

【问题讨论】:

标签: c# url filenames


【解决方案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);
}

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

【讨论】:

    【解决方案2】:

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

    Request.Url.AbsolutePath

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

    【讨论】:

    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多