【问题标题】:how to get filename from URL without downloading file c#如何从 URL 获取文件名而不下载文件 c#
【发布时间】:2017-07-01 08:44:15
【问题描述】:

这是我的代码

Uri uri = new Uri(this.Url);
var data = client.DownloadData(uri);
if (!String.IsNullOrEmpty(client.ResponseHeaders["Content-Disposition"]))
{
    FileName = client.ResponseHeaders["Content-Disposition"].Substring(client.ResponseHeaders["Content-Disposition"].IndexOf("filename=") + 10).Replace("\"", "");
}

如何在不下载文件的情况下获取文件名,我的意思是不使用client.DownloadData??

【问题讨论】:

标签: c# url filenames


【解决方案1】:

WebClient 将不支持它,但是使用 HttpWebRequest,如果服务器支持它,或者如果它不发送正常的 GET 请求并且不下载数据,您可以尝试表现得很好并发送 HEAD 请求:

HEAD 请求:

HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
string disposition = response.Headers["Content-Disposition"];
string filename = disposition.Substring(disposition.IndexOf("filename=") + 10).Replace("\"", "");
response.close();

如果服务器不支持 HEAD,发送普通的 GET 请求:

HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
string disposition = response.Headers["Content-Disposition"];
string filename = disposition.Substring(disposition.IndexOf("filename=") + 10).Replace("\"", "");
response.close();

【讨论】:

  • 谢谢先生,这只是在我发布之前节省了我 8 小时的搜索时间,谢谢先生,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多