Die Frage, die hier gestellt wird: How can I send an HTTP POST request to a server from Excel using VBA? ist fast genau das, was ich suchte, außer dass ich versuche, eine Reihe von Dateien an den Server zu senden. Ich googelte weiter und fand How do I upload a zip file via HTTP post using VBA? Das war auch gut, aber ziemlich entmutigend - es scheint wie eine Menge Arbeit (nicht nur ein HTML Formular hier zu machen ...).Wie senden Sie Dateien über HTTP_POST mit Excel mit VBA?
Option # 2 hier: http://www.motobit.com/tips/detpg_post-binary-data-url/ (wie in der Frage zu SO oben erwähnt) scheint wie es würde gut funktionieren, aber wie ich in JS und CSS arbeite, habe ich keine Ahnung, wie man FormData (die Binärdateien zu erstellen senden an den Server) im Beispiel.
Kann mir bitte jemand helfen? Im Wesentlichen möchte ich 3-6 Dateien über HTTP_POST via VBA von innerhalb von Excel zu einem PHP-Skript auf einem Webserver senden, der Formulardaten wie erwartet. Ein HTML-Formular, um damit umzugehen, würde aussehen wie:
<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>
Vielen Dank im Voraus.
EDIT - 2. August 2012
Ich versuche immer noch zu diesem Thema zu arbeiten. Ich kenne VBA/6 nicht, ziemlich einfach nur JS, also bin ich etwas verloren. Hier ist, was ich bisher getan haben:
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
Die Meldungsfelder am unteren Rand des Skripts zu tun Ausgabe der Header des Servers und Antwort (leere HTML-Seite). Ich habe das Gefühl, dass es etwas gibt, das ich nicht in den Headern einstelle, um den Server glücklich zu machen (Anmerkung: Ich versuche, Content-Type zu kommentieren).
Wenn jemand Erfahrung mit dem WinHttpRequest-Objekt in VBA/6 hat, um eine Binärdatei per HTTP zu senden, bitte helfen Sie! :)
Welche Art von Dateien: Text oder Binär? –
Wären Sie in der Lage, die Dateien einzeln zu senden? Oder ist das keine Option? – ikh
@TimWilliams Binär, Excel-Dateien. – jonathanbell