使用XMLHTTP和ADO下载开放文档格式文件



我正试图从node.js应用程序下载"Open Document Format"文件,该应用程序正通过服务器上的Open Office转换/导出(HTML到各种格式)。这适用于PDF、Text、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

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

此外,您的数据声明是粗略的,并且xmlhttp是一个Variant(因此代码的工作"只是运气好")。

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

你对.setOption的使用看起来也不正确,你确定你没有在那里遇到异常("参数不是可选的")吗?这是一个方法,而不是属性。

但我怀疑这些是否能解决你所看到的问题。

篡改会话cookie也表明你在这里做了不正当的事情(如非法)。查阅该网站的使用条款。网络抓取就是盗版。

最新更新