질문 : 여기에 묻는 질문 : How can I send an HTTP POST request to a server from Excel using VBA? 거의 내가 서버에 파일의 번호를 보내려고하는 것을 제외하고는 내가 무엇을 찾고 있었는지. 나는 더 많이 googled했고, 발견했다 How do I upload a zip file via HTTP post using VBA? 이것은 또한 좋았다. 그러나 꽤 낙담한다 - 그것은 많은 작업 (단지 HTML 폼을 여기에서 만드는 것 이외에. ..)과 같게 보인다.VBA를 사용하여 Excel에서 HTTP_POST를 통해 파일을 보내는 방법은 무엇입니까?
옵션 # 2 여기 :(위에서 언급 한 질문에 인용)은 제대로 작동하지만 JS 및 CSS에서 작업 할 때 FormData (이진 파일을 서버에 보내기).
아무도 도와 줄 수 있습니까? 본질적으로, Excel 같은 내부에서 VBA를 통해 HTTP_POST를 통해 3-6 개의 파일을 보내고 같은 형식 데이터를 기대하는 웹 서버의 PHP 스크립트로 보내려고합니다. 이를 처리 할 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>
감사합니다.
편집 - 8 월 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을 주석 처리하는 것입니다).
누구든지 VBA/6의 WinHttpRequest 객체를 사용하여 HTTP를 통해 바이너리 파일을 POST 한 경험이 있으면 도움을 요청하십시오! :)
어떤 종류의 파일입니까 : 텍스트 또는 바이너리? –
파일을 하나씩 보낼 수 있습니까? 또는 옵션이 아닌가요? – ikh
@TimWilliams 바이너리, 파일을 엑셀. – jonathanbell