Вопрос, заданный здесь: Как я могу отправить запрос HTTP POST на сервер из Excel с помощью VBA? это почти то, что я искал, за исключением того, что я пытаюсь отправить число файлов на сервер. Я погуглил дальше и нашел Как мне загрузить zip-файл через HTTP-запись с помощью VBA?Это тоже было хорошо, но довольно обескураживающе — кажется, что это много работы (не только создание HTML-формы здесь.. .).
Вариант № 2 здесь: http://www.motobit.com/tips/detpg_post-binary-data-url/(как указано в вопросе о SO, указанном выше), кажется, что это сработает. хорошо, но поскольку я работаю в JS и CSS, я понятия не имею, как создать FormData (двоичные файлы для отправки на сервер) в примере.
Кто-нибудь может мне помочь? По сути, я хочу отправить 3-6 файлов через HTTP_POST через VBA из Excel в PHP-скрипт на веб-сервере, который ожидает данные формы, такие как . HTML-форма для этого будет выглядеть так:
Заранее всем спасибо.
РЕДАКТИРОВАТЬ -- 2 августа 2012 г.
Я все еще пытаюсь решить эту проблему. Я не знаю 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).
Если у кого-то есть опыт использования объекта WinHttpRequest в VBA/6 для POST бинарного файла через HTTP, пожалуйста, помогите! :)