Fileupload per HTTP

  • Hallo,

    Möchte ein Fileupload per HTTP machen.

    Dazu programmiere ich in php ein einfaches script, welches files von folgendem formular annimmt:

    Code
    <form action="?upload=ok" method="post" enctype="multipart/form-data">
    <input type="file" name="datei">
    <input type="submit">
    </form>

    Es kann sein, dass enctype und type nicht ganz stimmen, habs jetzt so ausm kopf eben geschrieben wie ich meinte, es geht auch nur um das PHP-Script jetzt, welches $_GET['upload'] auf "ok" überprüft. So wie man etwas per GET übermittelt weiß ich, allerdings hakt es dann an der datei.
    Wie muss ich die mitschicken? encrypted? wie sieht der HTTP-Header aus, wenn dateien übermittelt werden?
    Brauche mal n paar infos dazu :)

  • such doch mal nach dateiupload und so ähnlich.
    upload programme hatten wir hier schon zur genüge, auch mit php.

    ps: lass auf den server ja keine .php dateien hochladen. sonst kriegste evtl sehr schnell probleme :D

  • So hab mir das mal angeguckt. Wie das mit PHP läuft weiß ich ja auch.
    Muss wohl irgendwie so aussehn:


    nur weiß ich nicht, wie das bild codiert werden muss für den Upload und auch nicht, was bei Content-Length: hinkommt. nur die datei, oder auch alles was darunter kommt, alle "-----------------------------7da14d2530540--" mitgezählt oder nicht undso[MSIE_newline_end ]

  • Nach dem Doppeltem Zeilenumbruch beginnen ja die daten die du senden willt als gehört das auch mit zum content

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • Ich hab mich auch schon mal an einem solche script versucht vor 3 tagen, aber über tcp

    Spoiler anzeigen
    [autoit]

    #include<string.au3>
    Opt("TrayIconDebug", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $cookie = _banane_login("test", "12301230")
    _banane_upload($cookie, "Hier den Pfad des Bildes eintragen")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _banane_startup()
    TCPStartup()
    $iSocket = TCPConnect("91.121.184.89", 80)
    Return $iSocket
    EndFunc ;==>_banane_startup

    [/autoit] [autoit][/autoit] [autoit]

    Func _banane_login($sUsername, $sPassword)
    $sPost = "nick=" & $sUsername & "&password=" & $sPassword & "&login=Login"
    $sHeader = "POST /myib/login/ HTTP/1.1" & @CRLF & _
    "Host: http://www.imagebanana.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Referer: http://www.imagebanana.com/myib/login/" & @CRLF & _
    "Content-Type: application/x-www-form-urlencoded" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
    $iSocket = _banane_startup()
    TCPSend($iSocket, $sHeader)
    Do
    $sRecv = TCPRecv($iSocket, 1)
    Until $sRecv <> ""
    Do
    $sRecv &= TCPRecv($iSocket, 1)
    Until @error Or StringInStr($sRecv, @CRLF & @CRLF)
    _banane_shutdown($iSocket)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $aUser_ID = _StringBetween($sRecv, "user_id=", ";")
    $aPassword = _StringBetween($sRecv, "password=", ";")
    $sCookie = "user_id=" & $aUser_ID[0] & "; password=" & $aPassword[0]

    [/autoit] [autoit][/autoit] [autoit]

    Return $sCookie
    EndFunc ;==>_banane_login

    [/autoit] [autoit][/autoit] [autoit]

    Func _banane_mylib($sCookie)
    $sHeader = "GET / HTTP/1.1" & @CRLF & _
    "Host: http://www.imagebanana.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Referer: http://www.imagebanana.com/myib/login/" & @CRLF & _
    "Cookie: " & $sCookie & @CRLF & @CRLF
    $iSocket = _banane_startup()
    TCPSend($iSocket, $sHeader)
    Do
    $sRecv = TCPRecv($iSocket, 1)
    Until $sRecv <> ""
    Do
    $sRecv &= TCPRecv($iSocket, 1)
    Until @error Or StringInStr($sRecv, "</html>")
    _banane_shutdown($iSocket)
    FileWrite("main.html", $sRecv)
    EndFunc ;==>_banane_mylib

    [/autoit] [autoit][/autoit] [autoit]

    Func _banane_upload($sCookie, $sFile)
    $sPost = "-----------------------------18060217183753" & @CRLF & _
    'Content-Disposition: form-data; name="img"; filename="Bild.jpg"' & @CRLF & _
    "Content-Type: image/jpeg" & @CRLF & _
    @CRLF & _
    FileRead(FileOpen($sFile)) & @CRLF & _
    '-----------------------------18060217183753' & @CRLF & _
    'Content-Disposition: form-data; name="send"' & @CRLF & _
    @CRLF & _
    'Hochladen!' & @CRLF & _
    '-----------------------------18060217183753' & @CRLF & _
    'Content-Disposition: form-data; name="resize"' & @CRLF & _
    @CRLF & _
    '320x240' & @CRLF & _
    '-----------------------------18060217183753--' & @CRLF & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    $sHeader = "POST / HTTP/1.1" & @CRLF & _
    "Host: http://www.imagebanana.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Referer: http://www.imagebanana.com/" & @CRLF & _
    "Cookie: " & $sCookie & @CRLF & _
    "Content-Type: multipart/form-data; boundary=---------------------------193231953297" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
    $iSocket = _banane_startup()
    TCPSend($iSocket, $sHeader)
    Do
    $sRecv = TCPRecv($iSocket, 1)
    Until $sRecv <> ""
    Do
    $sRecv &= TCPRecv($iSocket, 1)
    Until @error Or StringInStr($sRecv, "</html>")
    FileWrite("upload.html", $sRecv)
    _banane_shutdown($iSocket)
    EndFunc ;==>_banane_upload

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _banane_shutdown($iSocket)
    TCPCloseSocket($iSocket)
    TCPShutdown()
    EndFunc ;==>_banane_shutdown

    [/autoit]

    ich hab es mit dem direkten öffnen des Bildes über fileopen versucht jedoch ohne erfolg.

    vielleicht muss man die datei auch binär öffen.

    Ich hoffe du kannst vllt. etwas mit den headern anfangen.


    €dit:

    Ich habs geschafft.

    Man muss die Datei normal per fileopen öffnen und ich stelle fest das dieser Boundary wert vollkommenegal ist.

    bei meinem vorherigen script war nur der fehler drin das sich der Boundary wert unterschieden hat ... also zwischen Header und Post packet.


    HIer nochmal das Scipt das bei mir funktoniert.
    Das script ist mit Test account. Einfach eine Bild datei auswählen.

    Spoiler anzeigen
    [autoit]

    #include<string.au3>
    Opt("TrayIconDebug", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $cookie = _banane_login("test", "12301230")
    _banane_upload($cookie, "Bild.jpg")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _banane_startup()
    TCPStartup()
    $iSocket = TCPConnect("91.121.184.89", 80)
    Return $iSocket
    EndFunc ;==>_banane_startup

    [/autoit] [autoit][/autoit] [autoit]

    Func _banane_login($sUsername, $sPassword)
    $sPost = "nick=" & $sUsername & "&password=" & $sPassword & "&login=Login"
    $sHeader = "POST /myib/login/ HTTP/1.1" & @CRLF & _
    "Host: http://www.imagebanana.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Referer: http://www.imagebanana.com/myib/login/" & @CRLF & _
    "Content-Type: application/x-www-form-urlencoded" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
    $iSocket = _banane_startup()
    TCPSend($iSocket, $sHeader)
    Do
    $sRecv = TCPRecv($iSocket, 1)
    Until $sRecv <> ""
    Do
    $sRecv &= TCPRecv($iSocket, 1)
    Until @error Or StringInStr($sRecv, @CRLF & @CRLF)
    _banane_shutdown($iSocket)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $aUser_ID = _StringBetween($sRecv, "user_id=", ";")
    $aPassword = _StringBetween($sRecv, "password=", ";")
    $sCookie = "user_id=" & $aUser_ID[0] & "; password=" & $aPassword[0]

    [/autoit] [autoit][/autoit] [autoit]

    Return $sCookie
    EndFunc ;==>_banane_login

    [/autoit] [autoit][/autoit] [autoit]

    Func _banane_mylib($sCookie)
    $sHeader = "GET / HTTP/1.1" & @CRLF & _
    "Host: http://www.imagebanana.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Referer: http://www.imagebanana.com/myib/login/" & @CRLF & _
    "Cookie: " & $sCookie & @CRLF & @CRLF
    $iSocket = _banane_startup()
    TCPSend($iSocket, $sHeader)
    Do
    $sRecv = TCPRecv($iSocket, 1)
    Until $sRecv <> ""
    Do
    $sRecv &= TCPRecv($iSocket, 1)
    Until @error Or StringInStr($sRecv, "</html>")
    _banane_shutdown($iSocket)
    FileWrite("main.html", $sRecv)
    EndFunc ;==>_banane_mylib

    [/autoit] [autoit][/autoit] [autoit]

    Func _banane_upload($sCookie, $sFile)
    $sPost = "-----------------------------18060217183753" & @CRLF & _
    'Content-Disposition: form-data; name="img"; filename="Bild.jpg"' & @CRLF & _
    "Content-Type: image/jpeg" & @CRLF & _
    @CRLF & _
    FileRead(FileOpen($sFile)) & @CRLF & _
    '-----------------------------18060217183753' & @CRLF & _
    'Content-Disposition: form-data; name="send"' & @CRLF & _
    @CRLF & _
    'Hochladen!' & @CRLF & _
    '-----------------------------18060217183753' & @CRLF & _
    'Content-Disposition: form-data; name="resize"' & @CRLF & _
    @CRLF & _
    '320x240' & @CRLF & _
    '-----------------------------18060217183753--' & @CRLF & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    $sHeader = "POST / HTTP/1.1" & @CRLF & _
    "Host: http://www.imagebanana.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Referer: http://www.imagebanana.com/" & @CRLF & _
    "Cookie: " & $sCookie & @CRLF & _
    "Content-Type: multipart/form-data; boundary=---------------------------18060217183753" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
    $iSocket = _banane_startup()
    TCPSend($iSocket, $sHeader)
    Do
    $sRecv = TCPRecv($iSocket, 1)
    Until $sRecv <> ""
    Do
    $sRecv &= TCPRecv($iSocket, 1)
    Until @error Or StringInStr($sRecv, "</html>")
    FileWrite("upload.html", $sRecv)
    _banane_shutdown($iSocket)
    EndFunc ;==>_banane_upload

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _banane_shutdown($iSocket)
    TCPCloseSocket($iSocket)
    TCPShutdown()
    EndFunc ;==>_banane_shutdown

    [/autoit]

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    Einmal editiert, zuletzt von monkey (10. Mai 2010 um 19:51)

  • Kein Ding ich danke dir aber auch ich denke ohne deinen Post hätte ich noch länger hier gesessen und gesucht wo der fehler ist.... blöder boundary wert.

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer