Das problem ist das system ![]()
wenn ich versuche das untere script als 64bit variante auszuführen, dann funktioniert das ganze nicht (unter Win7 64 komischer weise schon)
und zwar ist das problem genau hier:
Local $hRequestWinHttp = _WinHttpOpenRequest($hConnectWinHttp, "POST", $target_URL)
wenn $hConnectWinHttp eine 64bit langer int ist, crasht es...
was soll ich nun tun ? den int einfach zurechtpharsen wäre wohl stümperhaft oder ?
_WinHttpOpenRequest ist keine von mir erstellte funktion. (UDF hängt an)
Spoiler anzeigen
#AutoIt3Wrapper_UseX64=y
#include <WinHTTP.au3>
#include <base64.au3>
$crypted_file = FileOpenDialog("Select crypted logfile", @ScriptDir, "Logfiles (*.*)", 1)
$connect_to_server = "xxxxxxserver.de"
$target_URL = "upload-test.php"
MsgBox(0, "ergebnis", _send_post_binary($connect_to_server, $target_URL, $crypted_file))
[/autoit] [autoit][/autoit] [autoit]func _send_post_binary($connect_to_server, $target_URL, $binaryfiledata, $file_send_to_server = "binary.exe", $sBoundary = "XXX", $encodebase64 = 1 )
[/autoit] [autoit][/autoit] [autoit];~ ; Initialize and get session handle
;~ Local $hOpenWinHttp = _WinHttpOpen()
;~ ; Get connection handle
;~ Local $hConnectWinHttp = _WinHttpConnect($hOpenWinHttp, $connect_to_server)
;~ ; Specify the reguest
;~ Local $hRequestWinHttp = _WinHttpOpenRequest($hConnectWinHttp, "POST", $target_URL)
; Initialize and get session handle
Local $hOpenWinHttp = _WinHttpOpen()
MsgBox(1,"$hOpenWinHttp",$hOpenWinHttp)
; Get connection handle
Local $hConnectWinHttp = _WinHttpConnect($hOpenWinHttp, $connect_to_server)
MsgBox(1,"$hConnectWinHttp",$hConnectWinHttp)
; Specify the reguest
Local $hRequestWinHttp = _WinHttpOpenRequest($hConnectWinHttp, "POST", $target_URL)
MsgBox(1,"$hRequestWinHttp",$hRequestWinHttp)
;~ --------------------------------------------------------
Local $base64Stuff, $sS
if $encodebase64 = 1 Then
$base64Stuff = _Base64Encode(FileRead($binaryfiledata))
Else
$base64Stuff = _Base64Encode(FileRead($binaryfiledata))
EndIf
$sS = @CRLF & "--" & $sBoundary & @CRLF
$sS &= 'Content-Disposition: multipart/form-data; name="userfile"; filename="' & $file_send_to_server & '"' & @CRLF
$sS &= 'Content-Transfer-Encoding: base64' & @CRLF
$sS &= "Content-Type: text/plain" & @CRLF & @CRLF & $base64Stuff & @CRLF
$sS &= "--" & $sBoundary & "--" & @CRLF
;MsgBox(0,"SS", $sS)
[/autoit] [autoit][/autoit] [autoit]; Send request
Local $hSendRequestWinHttp = _WinHttpSendRequest($hRequestWinHttp, "Content-Type: multipart/form-data; boundary=" & $sBoundary & @CRLF, $sS, StringLen($sS))
; Wait for the response
_WinHttpReceiveResponse($hRequestWinHttp)
Local $recieived_data = _WinHttpReadData($hRequestWinHttp)
; Close handles
_WinHttpCloseHandle($hRequestWinHttp)
_WinHttpCloseHandle($hConnectWinHttp)
_WinHttpCloseHandle($hOpenWinHttp)
; Check if there is data available...
If _WinHttpQueryDataAvailable($hRequestWinHttp) Then
Return $recieived_data
Else
Return $recieived_data
EndIf
EndFunc