从VBScript中的HTTP文件的x位置开始下载n个字节

时间:2013-04-08 10:35:06

标签: vbscript

我见过许多处理通过VBScript将HTTP文件下载到ADO缓冲区的示例,但我无法弄清楚如何调整这些示例以满足我的需要:在给定的字节位置x开始下载并下载n个字节。我认为这与以下调用有关:

object.Open "GET", "url", asyncValue

以上代码尝试下载整个文件。那么我可以改变这一点,还是有一种不同的方法可以让我实现我在VBScript中所需要的东西?

1 个答案:

答案 0 :(得分:4)

使用XMLHttpRequest并设置Range标题:

url = "..."

first = 123
last  = 321

Set req = CreateObject("MSXML2.XMLHTTP.6.0")
req.Open "GET", url, False
req.setRequestHeader "Range", "bytes=" & first & "-" & last
req.Send

If req.Status = 200 Then WScript.Echo req.ResponseText

您可以通过设置

以块的形式检索远程文件
first = iteration * chunksize
last  = first + chunksize

或者您可以通过省略last值来检索文件的其余部分:

first = 123
last  = ""

如果远程文件是二进制文件,则可能需要将其保存为如下文件:

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 1 'binary
stream.Write req.responseBody
stream.SaveToFile "C:\out.file"
stream.Close