.net - .NET 是否有任何方法从URL获取文件扩展名

  显示原文与译文双语对照的内容
51 3

我想知道,要确保要从脚本下载的文件将有我想要的扩展名。

文件将不在以下网址:


http://example.com/this_url_will_download_a_file



或者,可以能是的,但我认为我只会使用这种网址:


http://example.com/file.jpg



我将不检查它: Url.Substring(Url.LastIndexOf(".") - 3, 3) 因为这是个很糟糕的方法。

那么你推荐我做什么?

时间: 原作者:

135 5

很奇怪但它很有用


string url = @"http://example.com/file.jpg";


string ext = System.IO.Path.GetExtension(url);


MessageBox.Show(this, ext);



但是就像crono所说的那样,它不能使用参数:


string url = @"http://example.com/file.jpg?par=x";


string ext = System.IO.Path.GetExtension(url);


MessageBox.Show(this, ext);



结果:"。jpgpar=x"?

61 4

如果你只是想获得 http://example.com/file.jpg.jpg 部分,那么只需使用 Path.GetExtension 作为 heringer建议。


//The following evaluates to".jpg"


Path.GetExtension("http://example.com/file.jpg")



如果下载链接类似于 http://example.com/this_url_will_download_a_file 然后,文件名将作为内容配置插件的一部分,一个用于显示显示对话框的浏览器的文件名的HTTP头。 if filename,那么你可以使用获得的technique文件名suggested而不用内容配置启动下载并获取HTTP头,而无需下载任何文件


HttpWebResponse res = (HttpWebResponse)request.GetResponse();


using (Stream rstream = res.GetResponseStream())


{


 string fileName = res.Headers["Content-Disposition"]!= null?


 res.Headers["Content-Disposition"].Replace("attachment; filename=","").Replace(""","") :


 res.Headers["Location"]!= null? Path.GetFileName(res.Headers["Location"]) : 


 Path.GetFileName(url).Contains('?') || Path.GetFileName(url).Contains('=')?


 Path.GetFileName(res.ResponseUri.ToString()) : defaultFileName;


}


res.Close();



原作者:
...