gpt4 book ai didi

vba - 如何使用 VBA 通过 HTTP post 上传 zip 文件?

转载 作者:行者123 更新时间:2023-12-02 00:37:44 25 4
gpt4 key购买 nike

其他人以某种形式多次问过这个问题,但大多数人都没有回答,或者给出的答案是“使用 C#,废话!”,顺便说一句,这是一个非答案。 ;-)

我想通过 VBA 将 zip 文件上传到 Web 服务器。服务器端代码已经存在并且运行良好;它通过手动表单上传接受 zip 文件,并对 zip 文件的内容进行处理。

理论上,我计划将 zip 文件的二进制内容转换为 HTTP 请求字符串,并使用 WinHTTP 库中的一些方法将其发送到服务器。如果一切顺利,服务器端脚本(在 Perl 中)应该无法判断文件是来自 VBA 还是浏览器并继续正常工作。

但是,将 zip 文件转换为 HTTP 请求字符串似乎不是很简单。

在线搜索似乎表明存在 3 种常见策略:

方法 1:WinHTTP 和手动将二进制编码为 HTTP 请求字符串

  • 涉及以二进制模式打开文件并手动应用一些编码伏都教将二进制流更改为 HTTP 请求字符串,并使用 WinHTTP 将其发送出去。 可怕的代码量。

  • 方法二:WinHTTP
  • 涉及使用 ADODB.Stream。不到十行代码。

  • 方法 3:通过 SendKeys 自动化 IE
  • 只能用一个词来形容这个黑客:呸!并且可能会在 future 版本的 IE 中崩溃,如果还没有的话。不到十行代码。 安全风险。

  • 我偏向 方法二 ,但是,文档很薄,代码示例很少,并且不确定它是否有效。大多数代码示例都不完整,并且经常有注释说它们不起作用。这个方法真的有效吗?

    方法一 是下一个。

    方法三 请不! (如果涉及到,最好使用 C#。喜欢 C#,只是要求只允许 VBA)

    任何人都有关于如何完成这项任务的好例子?

    最佳答案

    在对上述所有方法(以及更多方法)进行了大量的实验之后,我正在使用与您的“方法 1”相当的方法 - 我正在使用来自 http://www.motobit.com/tips/detpg_post-binary-data-url/ 的项目 (2) ,但具有以下分配:

     Set http = CreateObject("WinHttp.WinHttprequest.5.1")

    ...而不是该代码中建议的代码(我认为该代码有点老了)。但是,它并不完美 - 例如,到目前为止,我一直无法在我拥有的旧 Windows XP 机器上运行它(在 Win7 上运行正常)。

    关于vba - 如何使用 VBA 通过 HTTP post 上传 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939578/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com