2012-08-24 10 views
13

Por lo que entiendo para asp.net FileUpload.FileName recorre la ruta completa mientras que en firefox devuelve solo el nombre del archivo. ¿Cómo eliminaría la ruta de la cadena devuelta ya que solo necesito el nombre de archivo html codificado?asp.net FileUpload.FileName devuelve la ruta completa, es decir, cuando no es necesario

+0

'ist filename' simplemente el nombre del archivo, incluso en IE comenzando con IE8. http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails-in-ie8.aspx –

+0

Tengo que admitir IE7 y 8 , aunque estoy notando que mientras mi modo de navegador es ie8, el modo de documento sigue volviendo a IE7 Bajo IE7 e IE8, devuelve 'NewsImages/C: \ Users \ wolmarans \ Desktop \ xxyyzz.png" ' – Reahreic

+0

IE es tan malo :( –

Respuesta

18

Puede usar la clase estática Path para obtener el nombre de archivo.

var fileName = Path.GetFileName(somePath); 

Y la clase estática HttpUtility para codificarlo.

var encoded = HttpUtility.HtmlEncode(fileName); 
+0

Incluso con 'fileName = HttpUtility.HtmlEncode (Path.GetFileName (fileBrowser.PostedFile.FileName))' todavía devuelve la ruta completa – Reahreic

+2

Ok, ¿qué quiere decir con la ruta completa. Porque si llama a 'Path.GetFileName (" C: \ mypath \ myfile.txt ");' luego obtendrá '' myfile.txt "' – Josh

+0

C: \ Users \ wolmarans \ Desktop \ xxyyzz.png – Reahreic

5

Así que hay un ajuste IE (no sólo en IE8, pero las versiones más recientes también) en Herramientas -> Opciones de Internet -> Seguridad que le permite incluir o excluir la ruta local en la carga de archivos.

IE8 Local Directory Path Setting

Por esa razón, si no se quieren mantener información de la ruta completa, es más seguro para despojar de manera explícita la ruta si usted está deseando apoyar IE (no estoy seguro si otros navegadores tienen un entorno)

Como lo menciona Josh, Path.GetFileName (...) es una buena opción. También puede usar string.Split combinado con Linq.

string fileNameOnly = somePath.Split('\\').Last(); 
0
Path.GetFileName(Request.Files["file"].FileName) 
Cuestiones relacionadas