2010-02-15 11 views
26

Sto cercando di integrare l'analisi di più form-data in un modulo server Web in modo da poter alleviare le applicazioni Web di back-end (spesso scritte in linguaggi dinamici) dall'analisi dei dati multipart stessi. La grammatica multipart (RFC 2046) sembra non banale e se la implemento a mano molte cose possono andare storte. Esiste già un buon parser multipart/form-data scritto in C o C++? Ne sto cercando uno con senza dipendenze esterne diverse dalla libreria standard C o C++. Non ho bisogno della gestione degli allegati e-mail o delle classi I/O bufferizzate o di un runtime di portabilità o qualsiasi altra cosa, solo l'analisi multipart/form-data.Esiste un parser leggero multipart/form-data in C o C++?

cose che ho considerato:

  • GMime - dipende loquace, così non va.
  • libapreq - troppo grande, dipende dall'APR, mal documentato, nessun test unitario.

Ho anche visto scrivere un parser con Ragel, ma non riesco a capire come farlo perché la grammatica non è statica: il confine può cambiare arbitrariamente.

+0

"GMime - dipende loquace, così no go" - ti interessa spiegare perché? –

+4

Hai letto questa discussione: http://stackoverflow.com/questions/218089/simple-c-mime-parser? – Manuel

+1

@John: Ogni nuova dipendenza aggiunge problemi di installazione per i miei utenti, e voglio evitarlo al minimo. Molti server non hanno installato glib. Inoltre, ogni nuova dipendenza aumenta l'utilizzo delle risorse. Non ci sono molte applicazioni per server che usano glib, quindi se dipendo da glib prenderò tutto il suo consumo di memoria solo per analizzare alcuni dati mime. – Hongli

risposta

1

mimetic reclami per supportarlo. Penso che GNU cgicc possa anche supportarlo.

1

cgicc lo supporta ... Ma è scritto piuttosto male e trasmette il buffer di entrata in memoria.

-4

questo potrebbe non rispondere alla tua domanda direttamente, ma hai preso in considerazione hiphop per php da facebook?

converte il codice php in C++, quindi compila con g ++.

potrebbe farti risparmiare tempo scrivendo qualcosa per conto tuo.

5

Sì, ce n'è uno. Nessun segreto è mio. Sentiti libero di usarlo. Il collegamento è: MPFDParser. Non ha alcuna dipendenza.

9

So che questa domanda è un paio di anni ormai, ma avevo bisogno lo stesso e finito per usare questo:

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

+0

Sicuramente controlla i problemi! Per esempio. il termine al contorno deve essere già preceduto da "-", altrimenti non funzionerà. –