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