2011-06-01 16 views
5

Tengo un formulario que permite a un usuario subir un archivo al servidor. ¿Cómo puedo validar que el archivo cargado es, de hecho, el formato esperado (CSV, o al menos validar que es un archivo de texto) en ColdFusion 8?¿Cómo puedo determinar si un archivo cargado es un archivo CSV válido, o al menos texto, en ColdFusion 8?

+2

Tendrá que usar Java y no parece ser un enfoque definitivo. Consulte esta pregunta: http://stackoverflow.com/questions/51438/getting-a-files-mime-type-in-java – orangepips

Respuesta

4

Para formatos simples como CSV, simplemente compruébalo, por ejemplo a través de regex.

<cffile action="read" file="#uploadedFile#" variable="contents" charset="UTF-8"> 

<cfset LooksLikeCSV = REFind("^([^;]*;)+[^;]*$", contents)> 

Puede colocar comprobaciones adicionales con respecto a los límites de tamaño de archivo o caracteres prohibidos.

Para otros formatos de archivo, puede verificar header signatures que aparecen en los primeros pocos bytes del archivo.

Incluso podría escribir un analizador completo para su formato de archivo esperado - para la validación de CSV, podría hacer un ListToArray() en CR/LF y verificar cada línea individualmente contra una expresión regular. XML también debería funcionar de manera sencilla: solo intenta pasarlo al XmlParse(). Los formatos binarios como las imágenes son un poco más difíciles, pero las bibliotecas también existen allí.

+0

Esto realmente parece una buena idea. Voy a intentarlo. –

0

Creo que es tan simple como que especifica el valor de aceptar en cffile ... Desafortunadamente, los documentos CF8 no especifican el valor como parte de la información para cffile ... Está bajo administración de archivos ...

<cffile action=”upload” filefield=”filename” destination=”#destination#” accept=”text/csv”> 

CF8 » Controlling the type of file uploaded

Cuestiones relacionadas