使用XMLHTTP和ADO下载Open Document Format文件

时间:2014-04-14 00:22:08

标签: vb6 ado adodb xmlhttprequest odf

我正在尝试从node.js应用程序下载“Open Document Format”文件,该应用程序通过服务器上的Open Office进行转换/导出(HTML格式为各种格式)。这适用于PDF,文本,HTML,Word等,但不适用于作为ODF导出的文档。直接通过Web应用程序前端转换和下载相同的文件工作正常;通过XMLHTTP下载并使用ADO保存到磁盘由于某种原因破坏了文档。

这是我的功能:

Public Function downloadExport(fileToDownload, saveToPath)

Dim xmlhttp, ostream As Object

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
Set ostream = CreateObject("Adodb.Stream")

xmlhttp.setOption(2) = 13056
xmlhttp.open "GET", fileToDownload, False
'Cookie headers are correct
xmlhttp.setRequestHeader "Cookie", "sessionID=Arrays.4Qqu2s32xQQyZA4"
xmlhttp.setRequestHeader "Cookie", "express_sid=s%3ADHclQm7vYT1Ixa2SD2wjk"
xmlhttp.send

ostream.Type = 1
ostream.open
ostream.write xmlhttp.responseBody
ostream.SaveToFile saveToPath, 1
ostream.Close

Set ostream = Nothing
Set xmlhttp = Nothing

End Function

谢谢 EOF

1 个答案:

答案 0 :(得分:0)

跳过ADO Stream,只需将.responseBody检索到动态字节数组中。然后打开一个文件进行二进制写入并写入Byte数组。只需使用普通的VB6 I / O语句。

此外,您的数据声明很粗糙,而您的xmlhttp是一个变体(因此代码可以“运气好”)。

最好设置对库的引用,使用早期绑定,并用预定义的命名常量值替换幻数。

您对.setOption的使用看起来也不正确,您确定不会在那里爆炸(“参数不可选”)吗?这是一个方法,而不是一个属性。

但我怀疑其中任何一个都能解决你所看到的问题。

乱搞会话cookie也表明你在这里做了一些不正确的事情(如 illicit )。咨询该网站的使用条款。 Webscraping是盗版。