获取不带内容处置的文件名



我找了好几天这个问题的解决方案,但都找不到。

我想从带有网络客户端的网络服务器下载一个文件。下载效果很好,但我无法获得真正的文件名,这对我来说非常重要

我在许多主页上读到,文件名应该保存在内容处置标题中。不幸的是,该网站的标题是空的。我试着用

string header_contentDisposition ="";
using (WebClient client = new WebClient())
{
client.OpenRead(link);
header_contentDisposition = client.ResponseHeaders["Content-Disposition"];
MessageBox.Show(header_contentDisposition);
}

此标头中没有保存任何信息。

如果我尝试用浏览器(IE、Opera、Chrome)下载文件,文件名会显示在文件对话框中,因此必须将其保存在某个位置。

你能想象我在哪里能找到它吗?

编辑:我无法从URL中提取它,因为链接是由类似的php生成的

http://www.example.com/download.php?id=10

你可以试试这个:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try
{
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();
}
catch { }

测试日期http://upload.p-kratzer.com/index.php?dir=&file=asdfasdfwervdcvvedb,它确实返回了更潮湿的状态。JPG。

相关内容

  • 没有找到相关文章

最新更新