file upload - ¿Cómo puedo determinar si un archivo cargado es un archivo CSV válido, o al menos texto, en ColdFusion 8?
file-upload coldfusion-8 (3)
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?
Creo que es tan simple como especificar el valor de aceptación 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”>
No sé si te puede ayudar, pero Ben Nadel escribió excelentes artículos sobre CSV:
http://www.bennadel.com/blog/483-Parsing-CSV-Data-Using-ColdFusion.htm
http://www.bennadel.com/blog/501-Parsing-CSV-Values-In-To-A-ColdFusion-Query.htm
Para formatos simples como CSV, solo 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 controles adicionales con respecto a los límites de tamaño de archivo o caracteres prohibidos.
Para otros formatos de archivo, puede verificar las firmas de encabezado 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 a XmlParse()
. Los formatos binarios como las imágenes son un poco más difíciles, pero las bibliotecas también existen allí.