2009-05-01 5 views
5

Ho un FileUpload con un RegularExpressionValidator con la seguente espressione di convalida:File Upload con RegularExpressionValidator che non funziona con Firefox solo IE

^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.gif|.jpg|.JPG|.JPEG|.GIF|.jpeg|.png|.bmp|.3dm|.3dmf|.ai|.drw|.dxf|.esp|.mng|.png|.ps|.psp|.svg|.tiff)$ 

In questo modo ho assicurarsi che l'utente caricare solo le immagini. Ma per qualche motivo non funziona quando uso Firefox. Perché è questo e come posso aggirare il problema?

+0

Vorrei verificare il nome del file caricato per vedere se c'è qualche differenza tra ciò che IE è POST'ing vs Firefox come il nome del file. –

+0

Ho controllato. Nessuna differenza nel nome del percorso. Comunque è una domanda sul perché non funziona in Firefox. La risposta selezionata propone una nuova espressione regex vs. la spiegazione di ciò che è sbagliato in firefox. – myforums

risposta

1

ho trovato la soluzione .....

(.*\.([gG][iI][fF]|[jJ][pP][gG]|[jJ][pP][eE][gG]|[bB][mM][pP])$) 

Link to the answer

Godetevi !!!

+0

Questa è una regex completamente diversa da quella che la regex della tua domanda stava convalidando. puoi realizzare la stessa identica cosa con una regex molto più leggibile, come quella che ha pubblicato DaDa. –

14

Prova questo:

(.*?)\.(jpg|jpeg|png|gif)$ 
3

Un miglioramento alla soluzione di Dada che si rivolge per maiuscole e minuscole:

^(.*?)\.(((j|J)(p|P)(e|E)?(g|G))|((p|P)(n|N)(g|G))|((g|G)(i|I)(f|F)))$ 
-1

Non funziona con Firefox v3.x perché non permette di ottenere JavaScript nome del percorso completo dal campo di input del file e questa particolare espressione regolare si aspetta di vedere il nome completo del percorso.

0

ho avuto una soluzione a questo problema:

var reg = /([^\s]+(?=.(jpg|gif|png|jpeg)).\2)/gm; 
if (reg.test(uploadcontrol) == false) { 
    alert("Please upload valid image formats(.jpg,.gif,.jpeg and .png)"); 
} 
Problemi correlati