2011-07-26 6 views
5

Estoy tratando de analizar correctamente una solicitud multipart/form-data, funciona a menos que el archivo que se está cargando contenga comillas dobles.Regex para nombre de archivo con comillas en multipart

La solicitud se parece a (extracto de Wireshark):..

Content-Disposition: form-data; name="file"; filename="b'e\"e.JPG" 

Así que el archivo se llama en realidad b'e "e.jpg en mi sistema de ficheros local El navegador se escapa de las cotizaciones adecuadamente

Quiero agarrar el nombre del archivo b'e\"e.JPG de esta cadena

me encontré con una expresión regular para agarrar cadenas entre comillas con comillas escapadas interior:.

/"[^"\\]*(\\.[^"\\]*)*"/i 

(fuente http://www.regular-expressions.info/regexbuddy/stringescapedmulti.html)

La expresión regular funciona perfectamente cuando se aplica sobre la cadena "b'e\"e.JPG" pero cuando trato de alcance sólo en la parte , como:

/filename="[^"\\]*(\\.[^"\\]*)*"/i 

que no recibirá resultados.

Cualquier ayuda sería muy apreciada

Editar:

estoy trabajando con JavaScript, por lo que poner la expresión regular en el violín JS: http://jsfiddle.net/hDBcs/

Gracias!

Simon

+0

Sólo una prueba rápida con RegexBuddy funciona bien para mí, hay otra parte de la expresión regular eso podría estar arruinándolo? – CodingGorilla

+0

Hola, gracias por probar :) pero en javascript no funciona desafortunadamente. He agregado una prueba rápida en jsFiddle (ver edición). – sled

Respuesta

4

Posiblemente el problema es que no se está utilizando soportes con el fin de conseguir las piezas necesarias:

/filename="([^"\\]*(?:\\.[^"\\]*)*)"/i 
+0

muchas gracias! – sled

Cuestiones relacionadas