我正在尝试 (HTTP) 从 VBA 中以编程方式上传二进制文件。我打算在服务器上放置一个 ASPX 页面以接受文件和某些附加参数。
我知道有很多不错的方法可以做到这一点(例如使用网络服务而不是 aspx),但我的限制是它必须在 VBA 中运行(在 excel 文件中),而且我不能在上面安装任何额外的组件客户。
所以我想我会使用 WinHTTP,并且我找到了几个发布表单数据但不发布二进制文件的示例。我可能需要对文件内容进行 base64 编码?
所以我的问题是:
- 我需要手动进行编码还是可以让 WinHTTP 进行编码?
- 有没有比 WinHTTP 更好用的实用程序? (请记住,我不想安装任何额外的软件,它必须随 WinXP Pro、Office 2007 或 .NET 框架一起提供,例如)
- 有没有更好的方法,例如使用 ASP.NET 网络服务?
谢谢,奇科多罗
最佳答案
您可以使用 base64,但通常编写二进制文件更容易。
您必须跨越的障碍是构建有效的多参数/表单 POST。使用 WinHTTP 完全可以做到这一点,尽管我已经很多年没有这样做了,也没有提供示例代码的工具,但这并非微不足道。
您可以引用以下文章,了解如何使用 C# HttpWebRequest 执行此操作的示例。 WinHTTP api 当然有点不同,但文章的重点是 POST 正文的结构。
- C# File Upload with form fields, cookies and headers (真诚的)
- UploadFileEx: C#'s WebClient.UploadFile with more functionality (更具程序性,可能更容易确定格式)
通常我会提供示例代码,但正如我所说,我现在没有设置任何石器时代的工具 ;-)。
HTH
关于http - 从 VBA (WinHTTP) 通过 HTTP 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2742839/