2010-02-15 9 views
26

Estoy tratando de integrar el análisis de datos de formulario multiparte en un módulo de servidor web para que pueda aliviar las aplicaciones web backend (a menudo escritas en lenguajes dinámicos) de analizar los datos multiparte ellos mismos. La gramática multiparte (RFC 2046) no parece trivial y si la implemento a mano, muchas cosas pueden salir mal. ¿Ya hay un analizador multipart/form-data bueno y liviano escrito en C o C++? Estoy buscando uno con no dependencias externas distintas de la biblioteca estándar C o C++. No necesito el manejo de archivos adjuntos de correo electrónico ni las clases de E/S almacenadas en búfer ni un tiempo de ejecución de portabilidad o lo que sea, solo un análisis multipart/form-data.¿Hay un analizador multipart/form-data liviano en C o C++?

cosas que yo he considerado:

  • gmime - depende de simplista, por lo que no ir.
  • libapreq - Demasiado grande, depende de APR, mal documentada, sin pruebas de unidad.

También he considerado escribir un analizador sintáctico con Ragel, pero no puedo entender cómo hacerlo porque la gramática no es estática: el límite puede cambiar arbitrariamente.

+0

"gmime - depende de simplista, por lo que no va" - cuidado de explicar por qué? –

+4

¿Has leído este hilo: http://stackoverflow.com/questions/218089/simple-c-mime-parser? – Manuel

+1

@John: cada nueva dependencia agrega inconvenientes de instalación para mis usuarios, y quiero evitar eso al mínimo. Muchos servidores no tienen instalado glib. Además, cada nueva dependencia aumenta el uso de recursos. No hay muchas aplicaciones de servidor que utilicen glib, así que si dependo de glib, extraeré todo su consumo de memoria solo para analizar algunos datos de mimo. – Hongli

Respuesta

1

mimetic afirma que lo admite. Creo que GNU cgicc también puede soportarlo.

1

cgicc lo admite ... Pero está mal escrito y los relés en el búfer de entrada en la memoria.

-4

esto puede que no responda su pregunta directamente, pero ¿consideró hiphop para php desde facebook?

convierte su código php a C++ luego compila con g ++.

puede ahorrarle tiempo al escribir algo por su cuenta.

5

Sí, hay uno. Ningún secreto es mío. Sientase libre de usarlo. El enlace es: MPFDParser. No tiene dependencias en absoluto.

9

Sé que esta pregunta es un par de años de edad ahora, pero necesitaba la misma y terminó usando la siguiente:

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

+0

Definitivamente, compruebe los problemas! P.ej. el término límite debe tener el prefijo "-", o de lo contrario no funcionará. –