当URL尝试启动文件传输时,返回文件的名称

时间:2014-04-30 01:03:53

标签: http vbscript

我正在尝试使用vbscript返回从URL提供的文件的名称。例如,在浏览器中,此地址将尝试开始下载最新版本的Java JRE:

http://javadl.sun.com/webapps/download/AutoDL?BundleId=86895

我的脚本使用MSXML2.ServerXMLHTTP.6.0发送“GET”请求,然后使用ADODB.Stream写入文件,但是在发送“GET”请求之前,我想发送哪种请求来验证文件的名称?

浏览器非常智能,可以将文件名识别为jre-7u55-windows-i586.exe,所以我猜测VBS也应该能够。

提前致谢。

更新

更多搜索显示我可能想要GetResponseHeader。我已经尝试过使用它,但它每次都是空白的:

url      = "http://javadl.sun.com/webapps/download/AutoDL?BundleId=86895" 
Set req = CreateObject("MSXML2.ServerXMLHTTP.6.0") 
req.open "GET", url, False 
req.send() 
wscript.echo req.GetResponseHeader("Content-Disposition")

我认为我正在取得进步,但我显然遗漏了一些东西。

更新#2

看起来上面的URL实际上已重定向到这里:

http://sdlc-esd.sun.com/ESD6/JSCDL/jdk/7u55-b13/jre-7u55-windows-i586.exe?AuthParam=1398824389_144b5eeb1ec36ffe8bab22613453d40b&GroupName=JSC&FilePath=/ESD6/JSCDL/jdk/7u55-b13/jre-7u55-windows-i586.exe&File=jre-7u55-windows-i586.exe&BHost=javadl.sun.com

我查看了此网址的标头响应,文件名出现的唯一位置是URL文件= jre-7u55-windows-i586.exe

由于文件名在响应标题中不存在,浏览器是否知道在浏览器提供保存或打开文件时选择File = whatever.exe作为文件名?

目前我可以解析重定向网址并从那里提取文件名,但这似乎是一个非常难看的解决方案。

1 个答案:

答案 0 :(得分:1)

浏览器将最后一个路径段作为默认名称(因此只需删除查询部分并查找最后一个斜杠)。