c# - 如何从URL获取文件名而不下载文件c#

标签 c# url filenames

这是我的代码

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??

最佳答案

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

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=") + 9).Replace("\"", "");
response.close();

关于c# - 如何从URL获取文件名而不下载文件c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859016/

相关文章:

c# - WebClient的UploadFile大小限制

c# - 如何将 appsetting.json 部分加载到 .NET Core 中的字典中?

c# - X509 自定义扩展 - 如何设置它们?

url - 让 Spring 告诉 FreeMarker 要使用的 URL 编码

php - UTF-8、PHP、Win7 - 现在有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名吗?

java - getNameCount() 实际上算什么?

c# - AsParallel() 方法在 PCL 中受支持但在 .NET Standard 1.3 中不可用?

string - 将字符串输入公式字段并获取结果文本的最佳非交互式方法

android - 如何从 android 中的重定向 url 加载图像

windows - 在 Windows 上,应用程序输出可接受的最大文件名长度是多少? (更新和澄清)