如何使用VBA通过HTTP_POST发送文件使用Excel?(How to send files v

2019-06-25 09:27发布

这里的问题问: 我如何发送一个HTTP POST请求使用VBA从Excel服务器? 几乎正是我一直在寻找不同的是我想许多文件发送到服务器。 我还用Google搜索,发现我如何上传使用VBA通过HTTP POST一个zip文件? 这还不错,但是非常让人泄气 - 这似乎是一个大量的工作(不只是做一个HTML表单这里...)。

选项2浏览: http://www.motobit.com/tips/detpg_post-binary-data-url/ (如上面提到的SO问题引)似乎将工作得很好,但正如我在JS工作, CSS,我不知道如何创建FORMDATA(二进制文件发送到服务器)中的示例。

谁能帮帮我吗? 从本质上讲,我想通过VBA从Excel内部发送3-6文件在HTTP_POST到PHP脚本,期待形式的数据,如Web服务器上。 HTML表单处理这种事情是这样的:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" />
</form>

谢谢大家。

编辑 - 2012年8月2日

我仍然试图在这一问题上的工作。 我不知道VBA / 6,非常简单,只是基本的JS让我有点失落。 以下是我迄今所做的:

Sub HTTPInternetPutFile()

    ' create new object with WinHttpRequest for this operation
    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    Dim FormFields As String

    ' initialize variables that we will set and pass as parameters
    Dim sfpath
    Dim strURL As String
    Dim StrFileName As String


       StrFileName = "CLIPrDL.csv"
       sfpath = "C:\CLIPr\"
       strURL = "http://s0106001c10187ab1.gv.shawcable.net/uploadtest/upload_file.php"


       WinHttpReq.Open "POST", strURL, False


       ' Set headers
       WinHttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
       WinHttpReq.setRequestHeader "Accept-Charset", "ISO-8859-1,utf-8"
       WinHttpReq.setRequestHeader "Content-Type", "multipart/form-data"
       ' WinHttpReq.setRequestHeader "Content-Type", "text/html;charset=UTF8"
       WinHttpReq.setRequestHeader "Content-Disposition", "form-data; name=""userfile[]"""

       ' I dont understand this... why use fileup??
       FormFields = """filename=" & StrFileName & """"
       FormFields = FormFields & "&"
       FormFields = FormFields & sfpath

       ' so comment it out for now
       ' WinHttpReq.Send FormFields
       WinHttpReq.Send sfpath & StrFileName

       ' output this var to a message box becuase I dont know what it does really
       MsgBox FormFields
       ' Display the status code and response headers.
       MsgBox WinHttpReq.GetAllResponseHeaders
       MsgBox WinHttpReq.ResponseText


End Sub

在脚本底部的消息框做输出服务器的报头和响应(空白HTML页)。 我觉得有东西,我不是在头设置,使服务器幸福(注:尝试注释掉的Content-Type)。

如果有人在那里使用VBA / 6 WinHttpRequest对象通过HTTP来发布二进制文件有经验,请大家帮忙! :)

Answer 1:

这(使用WinInet)是VB6,但也应在VBA / Excel的工作:

http://wqweto.wordpress.com/2011/07/12/vb6-using-wininet-to-post-binary-file/



Answer 2:

我成功地使用下面的一个(它使用ADODB.Stream和WinHttp.WinHttpRequest.5.1):

http://www.ericphelps.com/scripting/samples/reference/web/http_post.txt

(如果网站消失,也对互联网档案馆提供 )



文章来源: How to send files via HTTP_POST with Excel using VBA?