我正在寻找这个问题的解决方案好几天,我找不到任何.
我想从带有webclient的web服务器下载文件.下载工作正常,但我无法获得真正的文件名,这对我来说非常重要.
我在许多主页上看过,文件名应该保存在Content-Disposition-Header中.不幸的是,这个网站的标题是空的.我试图得到它:
string header_contentDisposition ="";
using (WebClient client = new WebClient())
{
client.OpenRead(link);
header_contentDisposition = client.ResponseHeaders["Content-Disposition"];
MessageBox.Show(header_contentDisposition);
}
Run Code Online (Sandbox Code Playgroud)
此标题中没有保存信息.
如果我尝试使用我的浏览器(IE,Opera,Chrome)下载文件,文件名将显示在filedialog中,因此必须将其保存在某处.
你能想象我能在哪里找到它吗?
编辑:我无法从URL中提取它,因为链接是由php生成的
http://www.example.com/download.php?id=10
Run Code Online (Sandbox Code Playgroud) 我们需要以下内容:
如果文件实际上是文件,请从URL下载文件.否则如果它的页面什么也不做.
为了一个简单的例子,我有以下内容来下载文件:
My.Computer.Network.DownloadFile(
"http://www.wired.com/wiredenterprise/wp-content/uploads/2013/07/ff_googleinfrastructure_large.jpg",
"d:\ff_googleinfrastructure_large.jpg")
Run Code Online (Sandbox Code Playgroud)
但是,如果我们有一个普通的网页,例如" http://www.google.com ",它只会下载我们不想要的页面.
那么我怎样才能知道一个URL是否会导致文件而不是页面?
它可以是任何类型的文件,因此检查URL是否以.zip或.jpg或.docx或...结束,根本不会这样做.
VB.NET或C#中的答案都是受欢迎的,这就是我标记两者的原因.