这个问题已被其他人以某种形式多次提出,但大多数仍未得到答复,或者给出的答案是“使用C#,呃!”,顺便提一下,这是一个非答案。 ; - )
我想通过VBA将zip文件上传到Web服务器。服务器端代码已经存在且运行良好;它通过手动表单上传接受zip文件,并对zip文件的内容做一些事情。
理论上,我计划将zip文件的二进制内容转换为HTTP请求字符串,并使用WinHTTP库中的某些方法将其发送到服务器。如果一切顺利,服务器端脚本(在Perl中)应该无法判断文件是来自VBA还是浏览器并继续正常工作。
但是,将zip文件转换为HTTP请求字符串似乎不是很直接。
在线搜索似乎表明存在3种常见策略:
方法1:WinHTTP和二进制到HTTP请求字符串的手动编码
方法2:WinHTTP
方法3:通过SendKeys自动化IE
我倾向于方法2 ,但是,文档很薄,代码示例很少,并且不确定它是否有效。大多数代码示例都不完整,并且通常会有评论说它们不起作用。这种方法真的有效吗?
方法1 紧随其后。
方法3 请不要! (而不是使用C#,如果涉及到这一点。爱C#,只需要允许VBA)
任何人都有关于如何完成这项任务的好例子吗?
答案 0 :(得分:3)
在对上述所有方法(以及更多)进行了大量的实验后,我使用了与“方法1”相当的东西 - 我正在使用来自http://www.motobit.com/tips/detpg_post-binary-data-url/的第(2)项,但是具有以下任务:
Set http = CreateObject("WinHttp.WinHttprequest.5.1")
...而不是代码中建议的那个(我认为代码有点老了)。但它并不完美 - 例如,我到目前为止还无法在我拥有的旧Windows XP机器上工作(在Win7上运行正常)。