这个问题以某种形式被其他人问过很多次,但大多数问题都没有得到答案或者给出的答案是“使用C#”,顺便说一句,这是一个无解的回答。 ;-)
我想通过VBA将一个zip文件上传到Web服务器。服务器端代码已经存在并且运行良好;它通过手动表单上传接受zip文件并处理zip文件的内容。
理论上,我计划将zip文件的二进制内容转换为HTTP请求字符串,并使用WinHTTP库中的一些方法将其发送到服务器。如果一切顺利,服务器端脚本(Perl)不应该能够判断文件是来自VBA还是浏览器,并继续正常工作。
然而,将zip文件转换为HTTP请求字符串似乎并不是非常直观。
在线搜索似乎表明存在三种常见策略:
方法1:WinHTTP和手动编码二进制为HTTP请求字符串
- 涉及以二进制模式打开文件,并手动应用一些编码技巧,将二进制流转换为HTTP请求字符串,并使用WinHTTP发送它。 需要大量的代码。
方法2:WinHTTP
- 涉及使用ADODB.Stream。少于十行代码。
方法3:通过SendKeys自动化IE
- 只有一个词可以形容这个黑客技巧:恶心!而且很可能在IE的将来版本中出现问题,如果没有已经出现了。少于十行代码。安全风险。
我倾向于方法2,然而,文档很薄,代码示例很少,并且没有确定它是否有效。大多数代码示例都不完整,并且通常有注释说它们不起作用。这种方法真的有效吗?
方法1是下一步。
方法3请不要使用!(如果必须使用,请使用C#。喜欢C#,但要求只允许使用VBA)
有人有关于如何完成此任务的好例子吗?