tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
428
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    posi90 posi90 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    113
    Hallo,

    Ich möchte mehrere FILEs auf einen Server laden. Da es mir nur erlaubt ist über ein sehr eingeschränktes HTTP Webinterface Dateien hochzuladen, habe ich es ich C/C++ fast fertig realisiert.

    Über den Browser gesnifft sehen die Packets eines Uploads folgender Maßen aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    Send: Return Code: 0x00000000
    POST ... HTTP/1.1
    User-Agent: Opera/9.80 (Windows NT 6.1; U; de) Presto/2.10.229 Version/11.61
    Host: ...
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    Accept-Language: de-AT,de;q=0.9,en;q=0.8
    Accept-Encoding: gzip, deflate
    Referer: ...
    Cookie: ASPSESSIONIDQSTRSARB=JIMNHHCBIDABIEOFLKFGMJED; gesperrt=alle|direction=asc|rdo_keinFilter=checked|rdo_rh_bez=checked|
    Connection: Keep-Alive
    Content-Length: 16863
    Content-Type: multipart/form-data; boundary=----------SVGCWTfxlxZIMwQSpaWDfO
     
     
     
    Send: Return Code: 0x00000000
    ------------SVGCWTfxlxZIMwQSpaWDfO
    Content-Disposition: form-data; name="__VIEWSTATE"
     
    /wEPDwUKMTI0NTA2ODE5Nw9kFgJmD2QWBAIBD2QWAgIBDxYCHglpbm5lcmh0bWwFDE11bHRpLVVwbG9hZGQCBQ8WAh4HZW5jdHlwZQUTbXVsdGlwYXJ0L2Zvcm0tZGF0YRYCAgEPZBYSZg9kFgJmDxAPFgQeCENzc0NsYXNzBQdoaW53ZWlzHgRfIVNCAgJkZBYBZmQCAg9kFgJmDxBkZBYAZAIEDxYCHgdWaXNpYmxlaBYCAgEPEA8WBB4EVGV4dAUOQXV0b3NrYWxpZXJ1bmceB0NoZWNrZWRnZGRkZAIFDxYCHwRoFgICAQ8QDxYEHwUFGFByb3BvcnRpb25lbiBiZWliZWhhbHRlbh8GZ2RkZGQCBg8WAh8EaBYCAgEPEA8WAh8FBQ1CaWxkIHN0cmVja2VuZGRkZAIHDxYCHwRoFgICAQ8QDxYEHwUFHlNjaGxhZ3NjaGF0dGVuIGhpbnp1ZiZ1dW1sO2dlbh8GaGRkZGQCCA8PFgIfBQURRGF0ZWkgw7xiZXJ0cmFnZW5kZAIJDw8WAh8FBQpTY2hsaWXDn2VuZGQCCg8PFgYfAgUHaGlud2Vpcx8FBZwBPHA+PGI+R2VzYW10Z3LDtsOfZTwvYj48YnI+PHA+PGI+QWNodHVuZyE8L2I+IERpZSBHZXNhbXRncsO2w59lIGRlciBob2NoenVsYWRlbmRlbiBEYXRlaWVuIGRhcmYgZm9sZ2VuZGVuIFdlcnQgbmljaHQgw7xiZXJzY2hyZWl0ZW46PGI+IDUwIE1CICg1MTIwMCBLQik8L2I+HwMCAmRkZIk3+uj2tP7wpv5anE4HXcDgiRBN
    ------------SVGCWTfxlxZIMwQSpaWDfO
    Content-Disposition: form-data; name="ctl00$cph_text$ctl01"
     
    222750495
    ------------SVGCWTfxlxZIMwQSpaWDfO
    Content-Disposition: form-data; name="ctl00$cph_text$File1"; filename="Test.pdf"
    Content-Type: application/pdf
     
    %PDF-1.4
    %âãÏÓ
    11 0 obj<</H[556 171]/Linearized 1/E 6413/L 15445/N 2/O 14/T 15178>>
    endobj
                          
    xref
    11 13
    0000000016 00000 n
    0000000727 00000 n
    0000000556 00000 n
    0000000804 00000 n
    0000000932 00000 n
    0000001038 00000 n
    0000001775 00000 n
    0000002389 00000 n
    0000003081 00000 n
    0000003320 00000 n
    0000003565 00000 n
    0000003641 00000 n
    0000006158 00000 n
    trailer
    <</Size 24/Prev 15167/Root 12 0 R/Info 10 0 R/ID[<29803daf70ae9e64e763840ef915317b><37140295968d7f43ba601f2472d04627>]>>
    startxref
    0
    %%EOF
                 
    13 0 obj<</Length 93/Filter/FlateDecode/L 99/S 56>>stream
    xÚb```a``ªd`f`Öaàb@

    Es handelt sich dabei um einen "Multiupload" mit nur einer Datei. Der Rücksende String meiner Lösung fängt mit "HTTP/1.1 200 OK" an, von dem her besteht kein syntax Fehler. Die Datei befindet sich jedoch nicht am Server.

    Folgendes verwirrt mich ein bischen:
    Wofür ist das boundary und wie wird dieses generiert? (Länge?)
    Der File Inhalt steht sehr merkwürdig darin. Kann man das einfach binär rüberschicken?
    Im Internet habe ich etwas über MIME encoding herausgefunden, jedoch bin ich noch zu keinem Ergebnis gekommen.

    Kann mir jemand ein Beispiel zeigen, wie man eine PDF Datei mit POST hochlädt?

    mfg. Poseidon
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von posi90 Beitrag anzeigen
    Es handelt sich dabei um einen "Multiupload" mit nur einer Datei. Der Rücksende String meiner Lösung fängt mit "HTTP/1.1 200 OK" an, von dem her besteht kein syntax Fehler. Die Datei befindet sich jedoch nicht am Server.

    Folgendes verwirrt mich ein bischen:
    Wofür ist das boundary und wie wird dieses generiert? (Länge?)
    Das kannst du generieren wie du willst, du mußt nur dafür sorgen, das dieses Boundary nicht in den Daten selbst vorkommen kann.
    Zitat Zitat von posi90 Beitrag anzeigen
    Der File Inhalt steht sehr merkwürdig darin. Kann man das einfach binär rüberschicken?
    Ja, in der Regel schon. Man kann auch base64 o.ä. kodieren, muss das dann aber im MIME Header spezifizieren.

    Schau dir die entsprechenden RFCs zu MIME an.

    Zeig deinen Code bzw. deinen POST Aufruf.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    hab mal ein Upload-Script mit der Bash implementiert und hatte da ein ähnliches Problem. Nach langem suchen fand ich dann die Lösung für mein Problem:
    Nach der Datei steht ja nochmal die Boundary diese muss aber noch mit zwei "--" danach abgeschlossen werden;

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    -------------BOUNDARY_49324989
    Content-Disposition: form-data; name="datei"; filename="bubb.txt"
    Content-Type: text/plain
     
    bla bla bla bla
    daten blubb
    -------------BOUNDARY_49324989--

    Hat mich viel Nerven gekostet bis ich endlich das kleine Detail mit dem "--" im RFC gelesen habe

    Gruß,
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

Ähnliche Themen

  1. Http-get Http-post
    Von Movera im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.07.06, 17:56
  2. Http-get Http-post
    Von Movera im Forum HTML & XHTML
    Antworten: 0
    Letzter Beitrag: 04.07.06, 16:41
  3. HTTP Post mit PHP
    Von matzseesi im Forum PHP
    Antworten: 5
    Letzter Beitrag: 28.08.05, 23:26
  4. PHP HTTP Post Dateiuploadproblem
    Von hpvw im Forum PHP
    Antworten: 4
    Letzter Beitrag: 14.02.03, 20:08
  5. Http Post
    Von Wolfman im Forum PHP
    Antworten: 9
    Letzter Beitrag: 28.07.01, 13:15