2016-11-11 62 views
0

我想從一個下載管理器應用程序的URL獲取文件名。我知道使用Uri.AbsolutePathPath.GetFileName來獲得它,但這些方法對於某些url不會給出好的結果。如何從C#中的URL獲取真實文件名?

例如,在此link的真實姓名是的WinRAR 5.40的最終TR.zip,但Path.GetFileName賦予它作爲zjESdHoqm?關鍵= 035db62f2375981abf05c615955812a72d5f2701這是一個陌生的名字。

此鏈接也沒有重定向。它直接包含文件。所以我想問一下,有沒有一種確切的方式在C#中獲取正確的文件名?

更新:我已經想出了鏈接到期。對不起。但我無法用任何其他URL來解釋我的問題。

如果你想測試我的問題,你可以從這個page更新網址。

+0

重複的http://stackoverflow.com/questions/1105593/get-file-name-from-uri-string-in-c-sharp? – 5arx

+0

我在你的鏈接中試過這個方法,但是這個時候給出了'zjESdHoqm'。所以這不是我想要的。 –

+0

這些文件位於哪裏? – 5arx

回答

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

最後,文件名是正確的。謝謝大家試圖幫助。