我正在尝试使用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实际上已重定向到这里:
我查看了此网址的标头响应,文件名出现的唯一位置是URL文件= jre-7u55-windows-i586.exe
由于文件名在响应标题中不存在,浏览器是否知道在浏览器提供保存或打开文件时选择File = whatever.exe作为文件名?
目前我可以解析重定向网址并从那里提取文件名,但这似乎是一个非常难看的解决方案。
答案 0 :(得分:1)
浏览器将最后一个路径段作为默认名称(因此只需删除查询部分并查找最后一个斜杠)。