如何使用VBA使用Excel通过HTTP_POST发送文件?

这里的问题是:如何使用VBA从Excel向服务器发送HTTP POST请求?这几乎正是我想要的,只是我正在尝试向服务器发送一些文件。我进一步搜索了一下,发现如何使用VBA通过HTTP post上传zip文件?这也很好,但相当令人沮丧——似乎需要做很多工作(不仅仅是在这里制作HTML表单…)

选项2:http://www.motobit.com/tips/detpg_post-binary-data-url/ (正如上面提到的问题中所引用的)看起来它会工作得很好,但由于我使用JS和CSS,我不知道如何在示例中创建FormData(发送到服务器的二进制文件)

有人能帮我吗?本质上,我希望通过VBA通过HTTP_POST将3-6个文件从Excel内部发送到web服务器上的PHP脚本,该服务器需要表单数据,例如。处理此问题的HTML表单如下所示:

<form action=“upload\u file.php”method=“post”enctype=“multipart/form data”>
<输入name=“userfile[]”type=“file”/&gt&书信电报;br/>
<输入name=“userfile[]”type=“file”/&gt&书信电报;br/>
<输入name=“userfile[]”type=“file”/&gt&书信电报;br/>
<输入类型=“提交”/>
&lt/表格>

提前谢谢大家

编辑——2012年8月2日

我还在努力解决这个问题。我不知道VBA/6,基本上只是基本的JS,所以我有点迷路了。以下是我迄今为止所做的工作:

子HTTPInternetPutFile()
'为此操作使用WinHttpRequest创建新对象
Dim WinHttpReq作为对象
设置WinHttpRequest=CreateObject(“WinHttp.WinHttpRequest.5.1”)
将窗体字段设置为字符串
'初始化我们将作为参数设置和传递的变量
暗通道
暗弦
将StrFileName设置为字符串
StrFileName=“CLIPrDL.csv”
sfpath=“C:\CLIPr\”
strURL=”http://s0106001c10187ab1.gv.shawcable.net/uploadtest/upload_file.php"
WinHttpReq.打开“POST”,strURL,False
'设置标题
WinHttpReq.setRequestHeader“用户代理”、“Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”
WinHttpReq.setRequestHeader“接受字符集”、“ISO-8859-1,utf-8”
WinHttpReq.setRequestHeader“内容类型”、“多部分/表单数据”
'WinHttpReq.setRequestHeader“内容类型”,“文本/html;字符集=UTF8”
WinHttpReq.setRequestHeader“内容处置”、“表单数据;名称=”“userfile[]”
“我不明白。。。为什么要使用fileup??
FormFields=“”文件名=“&StrFileName&""""
FormFields=FormFields&“&”
FormFields=FormFields&sfpath
那么现在就评论一下吧
'WinHttpReq.Send FormFields
WinHttpReq.Send-sfpath&StrFileName
'将此变量输出到消息框,因为我不知道它真正的作用
MSGBoxFormFields
'显示状态代码和响应标题。
MsgBox WinHttpReq.GetAllResponseHeaders
MsgBox WinHttpReq.ResponseText
端接头

脚本底部的消息框输出服务器的标题和响应(空白HTML页面)。我觉得我没有在标题中设置一些东西来让服务器满意(注意:尝试注释内容类型)

如果有人有使用VBA/6中的WinHttpRequest对象通过HTTP发布二进制文件的经验,请提供帮助!:)

这(使用WinInet)是VB6,但也应适用于VBA/Excel:

[VB6] Using WinInet to post binary file

发表评论