30 Stimmen

Gibt es in C oder C++ einen einfachen multipart/form-data-Parser?

Ich überlege, die Integration der Analyse von Multipartiellen Formulardaten in ein Webserver-Modul zu betrachten, um Backend-Webanwendungen (oft in dynamischen Sprachen geschrieben) von der Analyse der Multipart-Daten selbst zu entlasten. Die Multipart-Grammatik (RFC 2046) sieht nicht trivial aus und wenn ich sie von Hand implementiere, können viele Dinge schiefgehen. Gibt es bereits einen guten, leichten Multipart/Formular-Daten-Parser in C oder C++ geschrieben? Ich suche nach einem ohne externen Abhängigkeiten, außer der C- oder C++-Standardbibliothek. Ich brauche keine Behandlung von E-Mail-Anhängen oder gepufferte E/A-Klassen oder eine Portabilitätslaufzeit oder so etwas, nur die Analyse von Multipart/Formular-Daten.

Dinge, die ich in Erwägung gezogen habe:

  • GMime - abhängig von glib, also keine Option.
  • libapreq - zu groß, abhängig von APR, schlecht dokumentiert, keine Unit-Tests.

Ich habe auch überlegt, einen Parser mit Ragel zu schreiben, aber ich kann nicht herausfinden, wie ich das machen soll, da die Grammatik nicht statisch ist: Die Grenze kann sich beliebig ändern.

10voto

James McLaughlin Punkte 18764

Ich weiß, dass diese Frage jetzt schon ein paar Jahre alt ist, aber ich brauchte das Gleiche und habe am Ende das hier benutzt:

https://github.com/iafonov/multipart-parser-c

6voto

Gorelov Grigory Punkte 71

Ja, es gibt einen. Kein Geheimnis, es ist mein eigener. Fühlen Sie sich frei, es zu benutzen. Der Link ist: MPFDParser. Es hat überhaupt keine Abhängigkeiten.

1voto

Ken Bloom Punkte 54770

mimetic behauptet, es zu unterstützen. Ich denke, GNU cgicc unterstützt es möglicherweise auch.

1voto

Artyom Punkte 29856

Cgicc unterstützt es ... aber es ist ziemlich schlecht geschrieben und verlässt sich auf den Eingabepuffer im Speicher.

-5voto

hasan Punkte 23

Dies beantwortet möglicherweise Ihre Frage nicht direkt, aber haben Sie schon einmal hiphop für PHP von Facebook in Betracht gezogen?

Es wandelt Ihren PHP-Code in C++ um und kompiliert ihn dann mit g++.

Es könnte Ihnen Zeit sparen, etwas Eigenes zu schreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X