Announcement

Collapse
No announcement yet.

application/octet-stream auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • application/octet-stream auslesen

    Hallo,
    ich habe einen Dienst geschrieben, der eine Webschnittstelle hat. Bestimmte Aktionen können über diese Schnittstelle ausgelöst werden.
    Nun möchte ich jedoch ein Bild an diese Schnittstelle schicken und auch speichern. Nur irgendwie komme ich mit dem was bei mir in der Schnittstelle akommt nicht so ganz klar :/

    Folgendes habe ich als Byte-Array vorliegen:
    Code:
    POST /?cmd=signature HTTP/1.1
    Content-Length: 13648
    Content-Type: multipart/form-data; boundary=aaw3fSq9A40Lc7jtvoe-A8KnoCLv_mKVPjr4tzdV
    Host: 192.168.0.210:25253
    Connection: Keep-Alive
    User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
    
    --aaw3fSq9A40Lc7jtvoe-A8KnoCLv_mKVPjr4tzdV
    Content-Disposition: form-data; name="file"; filename="neuer_test.jpg"
    Content-Type: application/octet-stream
    
    ???? JFIF      ?? C 		" & vbLf & "" & vbCr & " $.' ",#(7),01444'9=82<.342?? C			" & vbCr & "2!!22222222222222222222222222222222222222222222222222?? ??" ??           	" & vbLf & "?? ?   } !1AQa"q2???#B??R??$3br?	" & vbLf & "%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz???????????????????????????????????????????????????????????????????????????        	" & vbLf & "?? ?  w !1AQaq"2?B????	#3R?br?" & vbLf & "$4?%?&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????   ? ???(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(
    
    //.....
    
    d?W? ????RMcP?v?????lq?@??R{@?_??z$?E???8???????'? ????l????m-Og?I?o??? ?4?S??]?>?KY???F\???? 	~???zu??m????&?????W?oS???5)c?#k?*?? N<?@7M????]??-?>?m???AD???iR'X??X?? ?1?5??X?I$?I??????" & vbCr & "?&? X?'>bZ?N?zcidP??*???????jWW\m?l???????=?dQ@Q@Q@Q@Q@V???]jH????G^\?F}	 ?????? ?un??m? ??????#???r!?rBi??4o?@W?H???1.????????" & vbLf & "???fgvwb??$??M j_???Z?X??????????19v?bq???E V????[_????V??8?????'???g???????53??N????b#?4???>?CZ?????~?q$????B?( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ? ???a-??C*?x??????????o" & vbLf & "C/?5	?L?9?2??8`?8?r>????ey????LOY???%?~?? !????7????????'??? ?-F?=??n'?E???-dF???.???t?V?(?`??? ?Xt???VX???NU????h?$Ai+tx?U????c?!>=???>?)~??????????=^?A<C??7?D4?N???X??q?????F???I?????)%?4???j????j???N??Qc{o=??m??T?N?Q???^?(??(??(????M??+?end???$$$q/????E?bCg,0^E-????/9P?????*???^?Q%?????s???p??" & vbLf & ":??G,{?@vhz1??.?z??2?j???y>?h?f???????n?"b?5	C?p??<?*( ??( ??( ?
    
    // und noch mehr sonderzeichen...
    Nun sollen sich in diesem Buchstabensalat irgendwo mneine Datenfelder und das Bild verstecken.
    Das das ganze Codiert sein wird ist mir schon klar, decoh habe ich absolut keinen Durchblick wie ich das Decodieren und meine Felder auslesen kann.

    Hat jemand Erfahrungen, die er mit mir teilen mag?

    Vielen Dank.
    Hibbert

  • #2
    Die Übermittlung der Daten erfolgt immer in einer flachen Struktur. Getrennt werden die Daten alle durch das im Header angegebene Boundary (hier boundary=aaw3fSq9A40Lc7jtvoe-A8KnoCLv_mKVPjr4tzdV). Somit beginnt hier

    --aaw3fSq9A40Lc7jtvoe-A8KnoCLv_mKVPjr4tzdV

    ein Bereich von Daten. Was für Daten steht dann im Content-Type, weitere Infos wie der Filename in der Content-Disposition. Dann folgen die Daten. Dort sehe ich nur ein JPG Bild, keine weiteren Felder.

    Das alles ist nicht codiert!
    Zuletzt editiert von Christian Marquardt; 12.07.2012, 16:22. Reason: Formatiert
    Christian

    Comment


    • #3
      Hallo,
      ja das sind auch keine weiteren daten drin habe ich festgestellt. Ich habe beim Senden einen Fehler gemacht. Anschließend ist mir der Aufbau auch klar geworden, gerade mit dem boundary.

      OK, d.h. alles nach dem "Content-Type: application/octet-stream" schreibe ich nur noch in eine Datei und benenne diese in "irgendwas.jpg" ? Wenn ja, dann hat es bisher noch nicht funktioniert. Muss ich noch was beachten? Wenn nicht, dann würde ich genaueres Posten.

      Danke.
      Hibbert

      Comment


      • #4
        OK, d.h. alles nach dem "Content-Type: application/octet-stream" schreibe ich nur noch in eine Datei und benenne diese in "irgendwas.jpg" ?
        Nein alles was in dem Boundary 'aaw3fSq9A40Lc7jtvoe-A8KnoCLv_mKVPjr4tzdV' steckt ohne den Header. Du hast ja einen multipart Content deshalb werden da noch weitere MIME Parts mit anderen Daten folgen die nicht zum Bild gehören. Wenn da keine weiteren MIME Parts folgen gehe ich mal davon aus das dein Datenstrom kaputt ist.

        Comment


        • #5
          Der Name wie gesagt steht in der Content-Disposition. Insofern ist der Originaldateiname zugänglich.
          Ansonsten beginnt das NACH dem Zeilenumbruch der Content-Dispostion (Header). JPGs beginnen mit FF D8 FF E0.
          Christian

          Comment


          • #6
            Hallo,
            hier einmal das komplette Ding was ich empfange (Ich weiß nicht, mein Gefühl sagt mir, das sieht komisch und nicht ganz richtig aus...) :
            POST /?cmd=signature HTTP/1.1
            Content-Length: 13408
            Content-Type: multipart/form-data; boundary=szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Host: 192.168.0.210:25253
            Connection: Keep-Alive
            User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

            --szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Content-Disposition: form-data; name="caption"

            Test
            --szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Content-Disposition: form-data; name="msg"

            mein text
            --szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Content-Disposition: form-data; name="meta_desc"

            die meta desc
            --szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Content-Disposition: form-data; name="meta_key"

            die meta keys
            --szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Content-Disposition: form-data; name="pic_pos"

            middle
            --szgidqUD3fpVr1n_AEhAFp3pRgIo_WI8Z
            Content-Disposition: form-data; name="the_file"; filename="neuer_test.png"
            Content-Type: application/octet-stream

            ???? JFIF ?? C

            $.' ",#(7),01444'9=82<.342?? C

            2!!22222222222222222222222222222222222222222222222 222?? ??" ??
            ?? ? } !1AQa"q2???#B??R??$3br?
            %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz????? ?????????????????????????????????????????????????? ????????????????????
            ?? ? w !1AQaq"2?B???? #3R?br?
            $4?%?&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?? ?????????????????????????????????????????????????? ?????????????????????? ? ???(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(? ?(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??( ??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(?? (??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(? ?(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??( ??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(?? (??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(? ?(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??( ??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(?? (??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(? ?(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??( ??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(?? (??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(? ?(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??( ??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(?? (??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(? ?(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??( ??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(??(?? (??(??(??(??(??(??(??(??+KN??u8??4Hl?;d??o.>??V??? ??
            f??Y??$??z??<7?????8?#?m???1???>?jp?M3??Lg?i???^d# ?????-`??^A??u V?0?Ur? ? ?????n?;?NA? ,????????n?????4?$??#?1?'??h{?8m8?t]>???M?????P}?V??`? ???????v???z3X4P??%? ??mo?qX? ?^???m?{??<ZN??_?j????5????ig>a????<??t]95+??4VP!??e??8? h?Gve?u??r?8????R?gvg?????#?f??[R?V???tX???B???5Q?? }*? QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QWt?"? W?E??iCt?8???v???b R??v?}??{h??/????(??v??9=?W?hZ7?a?^??B????nO??=
            ??k7??Au7?b??j(???.?z ??hZ7????? ??????+?????;aY???}?J?^?4?Z?? K??E???(?Q@Q@Q@Q@oj?&???W????7???f8??*??y?#)Q?0C ??o#W?? ????9???? ???pH??????e?????W2I#?brI>??tQE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE -????1?[B?O#H?R??? T?6:???ZG?B 9`??9,?p@?? ?5?q}m?[Ia?I?4?R??)S0=R0pV????h ???.?? ?
            V?u????}Q??H?=?-G[???H&?c???+HGg? ?8??,{?Y?PEPEPEPEPR?[Myw
            ??M,?:?j2]?????????????
            ????k?F1,??;??r??sb?G??d???r????$?????)?McQZ???^?g u??????X??z?Y???EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPE PEPEPEPEPW4?6}JgX?"?%?=????O?1 ? ?H
            4?-?VK???|y?,? ?????????P????s
            YY?m???rC?,??|????2@?$???????)^;"G?+?%?#?_?s?@Hd?? d?E QE QE QE QE Q[?gm????q ????|??<??>??``8V?d???j????m???[?dv<?=H!rCm???3?w"i?"????!?!A?Tv?RI$?I&;?????.??i f????? @ ? PP?>?}OR??? ?s*?'s?sW|I}??;Zl?mk?????.??MY?? ????g????????L
            ???X?-`PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPZ?~??h? R4r?PW?e??????~U??????-??????5??b???@#?????z????-CP???|???j??4R$G`22z?hMKS?Ph?F?ZB??<???V8c????(?? (??*k;I??????|?,Q???? ?? X??Z??N??T-{L? r???(?{`?F?<Ou
            ??nE?????kl????Dj??]??????(??2??D??+?8??;? ?Oj??N???|?H??R?KTQ?????I V????LYh?????;?@?E#???zp?:?? ??????W:??2?????;<??r??9l2??????Y????I>??E QZ~???5?k{?V?-??
            ???[?????K?m'FH#?u?? ?? P~??v?
            ????????0%??)U??9?=?A?*? QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE 5?????Y??d??E?$Y????5????G?????5???tu????#8?
            *?? ????ee ??O?[@??L^O??o`@?X?Q@Q@Q@ox[?{?`?4?W?3? M???p?? k???_??;~??w
            v? ??-??? ??? ??@4QE ???????^??-1X?\2n.????F??q?F???VSM??Qn5??nH
            ??C1?? ?0?t?7P?nuK?5??UBF??R4Tp????'??7???k?????=40cl??: 4????rpI9tQ@Q@o????????????v?1???_p?+? '?n???k?}??@-???i????EZ ???( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??( ??(H ???8 F?YX""??bp ?k[????p?V?+?????]???'?_8??
            ;T??K,?u??Kq?{?{???.??f??X4 QE QE QE ?a??x???#EY??????oMin???l?e??!??? y???
            ????mJ}\??*????K?C? ?^3????[?????? gi??#??g??<???$.F@?V7Z??Z???L?!W?$?? $? ?+[?v~?t??Tz?nc?>??????#??@?s^?X?????P5??c???????27?
            Q???1??;??3?3;Y????i?Q@Q@Q@?D?U?U?CA?BoX0?gRJGpeh? ?&??YI??,??$??????K<ko?}Vcu'?????s)#??5?@?g????U?? h?,???F? p ZO? lU????Om??n???j<?>? $????
            T???B??*%??;M??????f???????_??X'??????r?? ????5
            N?U???????
            ?]?{*???p*? oe?r???$?? ??Nf? ??(?|%??kw?c?????E o}??Q??u???jQ ??????????????|????J???7??"?^#????x#
            ??i?PA??4?{?io?R?j^{'9???8??? hr9??j[{???c???H'??G,LU????4???m'???V?C,?B?R?0 wUu??r@]?v
            QE QE QE QE QE QE QE QE QE QE QE QE QE ?F??K;*??'?Sk{???>;?}? ????{???G??4?T? '?]m%???`?i?RVS?%?`???uX?????@Q@S????"??v
            ??%?? ?h?wM?ouY$[X??
            ?L?8??????y<kG?*?F???L?C??l?z??j?!??n!:?;?^?UZ?$6? ????R?!<p?%???%?&?:g???)?(??????s?
            ???*4?*?7????c)?2?6?????K????y^I?7?k_????gM???K?lT ?B??0?f????*???(??(??(????3?z????{?V(?8??g???8?iR( ??G!UTd?= ?w;C?=+U??E.?o?<0?yrq???????2??K?U?4???d????L?QV)n ?X#? ???$
            ?????????_.?a?L???QEw??<?????????????.f?i?;?I?1?$ ?j* ????Q?k???ng?$?Y??j
            (??(???+y?I?d?aO2VE$F????e?d?#???B????????{??p,??? a;?#w ?:?M????( ??(kK??n?????<.ut?-b? ??Y??c??r?B?-?,??Nw!=?2J5c?????e4?]?K??/?s??P???S??A??@3h????&??Il????E4y?4g?u?8#?GC??T QE QE QE QE QE QE QE QE QE QE QE QE V????? oT?? ???????????????y?Em? ?P
            W_?xC?????K?[?DYa?m[?????&????????C@?_??MKV?VrK?&8X?? }?+^??:J?????@?6 ???p06@?F? p?fz?I??KZ??r?o??t?b8??c?|?=??/D??????:?????F?????AM??f?'?D??K??????H??S??????
            ????Z??? ??B??##zc???cS??aV?? ????&?n?_&??3??1P3;bY??$??IE QE QE QEoD??K?? ????????!? ??r??7]? ?)????"????S?????8?????K?m'FH#?u?? ?? P~??v?????5?k{?e??t??????{?V??*???K?j?z??,?2??W??? h???
            tQE QE =????}??-5????z??*
            ???ZvQ???`?pmm?t? ~E????P
            ?SW??v????!???/u?PL2??fHV???????????,??$? '?????? ???n?? ???-??(??(??(?
            ?0?sO$??2,?????????+??c?$`?A?"?|?? =???+ ??B!S ?T/?X??$?#?gbY??I??E QE QE QE QE QE QE QE QE QE QE QE V????M?z? ?[????k{T?|!?/???????Z ???( ??( ??( '??Y?}R%~??n?d??2?? ?V???3?qFu??'@??z5???0?nU??0T? ?V<??<?M+??F,?z?NI?QE QE QE????????? ???1??F? ?!?>S?i9 ???Y'???G?Y???Y???OS[~ ?4?$|@?q?W??????%1? v? ??? ?o?/?Oj2????c??????Vo???1??+?v?l.??s)'????`PEPE??i?}4 ???a??_2?`2B?U?v?*?S?? t?xll??J??,??dO(?Xw?2 ?%W?b?W73^]Mus+?<?d?G9gbrI=?&?j???w?o??????c??????X?I?T V? ???n?? ???-???? #u???? ?m@QE QE QS??O?^?ik?y?"(8?>?????????Mv??O???? ???b?p???
            ??.??:U???,w*???????????9???(??(??(??(??(??(??(??( ??(??(??(??(??????>_?[N? ????Z???????????e??
            ???( ??( ??(z??%?
            ?????????q?H?????O?-???8e?A ? ???%??we? ? (?? (?? (?? ???{?O?? <????????o??k??'?????????f????)#??Pa????k??
            ???

            Comment


            • #7
              Was sieht denn schlecht aus?
              Christian

              Comment


              • #8
                Mich wundert es das diese Zeichenfoilge immer wieder vorkommt:
                %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
                Und wenn ich den Stream nach dem Zeilenumbruch (Content-Type: application/octet-stream) bis zum Ende oder bis zu einem NULL-Byte auslese und als Datei speicher kommt kein Gültiges Bild dabei heraus :/

                Deswegen war ja auch meine Frage, ob da noch eine spezielle Codierung drin steckt?

                Comment


                • #9
                  Warum nur bis zu einem Nullbyte? Das sind binäre Daten die werden bis zum Ende gelesen. Sie ergeben keinen lesbaren Text. Und diese Daten sind nicht codiert.
                  Christian

                  Comment


                  • #10
                    Ich habe jetzt verschiedene Dinge versucht:

                    Ich habe mir meinen Buffer angeguckt und nachgeschaut wo nur noch "0" stehen und habe den Buffer bis dorthin ausgelesen. -> Fehlerhaftes Bild

                    Ich habe mir die Content-Länge genommen, und habe dann nach dem Zeilenumbruch bei application/octet-stream bis zu dem Byte gelesen der an der Content-Length steht -> Fehlerhaftes Bild

                    Ich habe keine Ahnung mehr was ich tun kann. Schicke ich diesen Stream den ich empfange an meinen Webserver können alle Daten korrekt ausgelesen werden. Vllt liegt es auch an meinem Webserver, das dieser die Daten falsch entgegen nimmt :/

                    Hat einer vllt ein gutes Beispiel für einen Webserver in VB.net der solche POST Anfragen gut verarbeiten kann? Ich habe da irgendwie nie so das wahre gefunden :/

                    Hibbert

                    Comment


                    • #11
                      Zeige deinen Code zum schreiben der JPG-Datei
                      Christian

                      Comment


                      • #12
                        Eigentlich handelt es sich um kein JPEG sondern um ein PNG. Ich habe beim Versicken des Streams nur einen anderen Dateinamen angegeben :/

                        Code:
                        Dim fileName As String = "C:\demo\001.png"
                                Dim fs As FileStream = New FileStream(fileName, FileMode.Create, FileAccess.ReadWrite)
                                Dim bw As BinaryWriter = New BinaryWriter(fs)
                        
                                bw.Write(final)
                                bw.Close()

                        Comment


                        • #13
                          Was ist final?
                          Prüfe, ob die Headerbytes für ein PNG stimmen
                          teste es mit einer *.txt
                          Christian

                          Comment


                          • #14
                            Final ist das Byte-Array was die Bytes nach dem Zeilenumbruch von application/octet-stream bis Byte "X" enthält.

                            Comment


                            • #15
                              A PNG file starts with an 8-byte signature. The hexadecimal byte values are 89 50 4E 47 0D 0A 1A 0A; the decimal values are 137 80 78 71 13 10 26 10.
                              Das solltest du doch prüfen können und wie viele Bytes dein PNG hat weisst du erstmal auch. Somit kannst du also den Stream korrekt einlesen und speichern. Die Länge sollte dann das Ende des Requestes sein
                              Christian

                              Comment

                              Working...
                              X