Ich schreibe ein natives Modul in C++ für IIS7/8, das Datei-Uploads ablehnen soll, die mit spezifischen Erweiterungen in IIS eingehen.Parsen Sie die Inhaltsdispositionsfelder eines Multi-Form-Mime-Typs
Ich habe das Modul mit OnReadEntity funktioniert und kann den Anfragetext auf der Post Anfrage hochladen die Dateien sehen.
Da ich jedoch mit C++ ziemlich unerfahren bin, habe ich keine Ahnung, wie ich die Content-Disposition Fields aus dem Anfragetext zuverlässig auslesen soll, damit ich alle Dateinamen bekommen kann.
Unten ist ein Beispiel Anfrage:
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="attach1"; filename="YSMIsapiFilter.sln"
Content-Type: text/plain
SomeDataHere
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="attach2"; filename="ysmISAPIFilter.log"
Content-Type: application/octet-stream
I AM A LOG
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="enter_a_number"
------WebKitFormBoundaryUomVPwKHGvBwvDhP--
ol: max-age=0
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASPSESSIONIDSSSRCTRS=GHMFFGABJAAOAEHFCFIOOJIO
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Upgrade-Insecure-Requests: 1
Weiß jemand, ob es etwas in der httpserv.h API ist dies bereits für mich zu tun. Oder wenn es einen kostenlosen, nicht-kommerziellen Mime-Typ-Parser gibt, der das in Visual Studio 2015 erstellt.
Oder würde ich es selbst analysieren müssen.
Von dem, was ich sammeln kann, sollte Content-Disposition und Content-Typ immer die 2. und 3. Zeile nach einer Zeile sein, die mit ------ beginnt, die WebkitformBoundary unterscheidet sich ausstehende den Client den Post (IE, Chrome, FireFox, etc usw.). Dann müsste ich einfach zum nächsten überspringen ------ wenn es einen gibt.
Content-Disposition über die RFC-Spezifikation besagt, dass es sich immer um Formulardaten handelt; gefolgt von dem Namen des Formularfelds "attach1", und dann alle Daten, die mit dieser Eingabe "Dateiname" bei einer Eingabe vom Typ "Datei" gehen.
Nur auf der Suche nach Punkten in die richtige Richtung.
Ich habe bereits versucht Mimetic zu verwenden, aber ich konnte es nicht erstellen, wenn ich seinen Header zu meinem Projekt hinzufüge. Das Win32-Projekt, mit dem es kommt, baut, aber es wird nicht in meinem bauen.