2010-03-14 64 views
5

Por el momento me sale extensión de archivo del archivo como:Conseguir extensión del archivo de control FileUpload

string fileExt = System.IO.Path.GetExtension(filUpload.FileName); 

Pero si el usuario cambia la extensión de archivo del archivo (por ejemplo, el usuario puede cambiar el nombre de "prueba. txt "to" test.jpg "), no puedo obtener la extensión real. Cual es la solución ?

Respuesta

5

Usted parece estar preguntando si puede identificar de tipo de archivo de su contenido.

La mayoría de las soluciones intentarán la extensión del archivo, pero hay demasiados tipos de archivos posibles para identificarlos de manera confiable.

La mayoría de los enfoques utilizan los primeros bytes del archivo para determinar cuáles son.

Here es una lista, here otra.

Si solo está preocupado por el texto en comparación con el binario, vea this SO preguntas y respuestas.

Consulte this SO para comprobar si un archivo es un archivo JPG; este enfoque se puede ampliar para utilizar otros encabezados de archivo como en los primeros dos enlaces de esta respuesta.

1

Independientemente de lo que el usuario cambie el nombre de la extensión de archivo, esa es la extensión de archivo real.

Nunca debe depender de la extensión de archivo para informarle qué hay en el archivo, ya que puede renombrarse.

Ver "how can we check file types before uploading them in asp.net?"

1

No hay forma de obtener la extensión de archivo 'real' - la extensión de archivo que obtiene del nombre de archivo es la real. Si el contenido del archivo es su problema, puede recuperar el tipo de contenido con la propiedad .ContentType y verificar que se trata de un tipo de contenido que está esperando, por ejemplo. image/jpg.

Cuestiones relacionadas