Estoy intentando detectar el tipo de archivo de una biblioteca de archivos en nuestro servidor web ya que estamos implementando código diseñado para transmitir archivos al navegador de forma segura. Anteriormente, los archivos se almacenaban y presentaban a los usuarios a través de un href directo.Detectando un tipo de archivo mimetype en coldfusion que ya está cargado en el servidor
He intentado hacer esto 3 maneras diferentes, todos en mi máquina local (que no es un entorno de producción simulada):
Configuración de una variable a ser el valor de lo que se devuelve desde la función getPageContext(). getServletContext(). getMimeType(). Esto detecta algunos, pero no todos, tipos de mime para archivos.
Creando un objeto de coldfusion.util.MimeTypeUtils y llamando a la función guessMimeType(). Esto también detecta algunos, pero no todos, tipos de mime para archivos.
A cffile action = "leer" en los archivos de la biblioteca. Esta es la solución recomendada por mi jefe, ya que ha utilizado esto en archivos con cffile action = "upload" desde un formulario (y dice que funciona), pero cuando lo uso, la estructura cffile siempre está en blanco.
Idealmente, quiero recuperar el tipo mime de cada archivo ubicado en el servidor con 100% de precisión. El código que he escrito detectó aproximadamente el 99% de los archivos en mi copia del repositorio, dejando unos 30 que no puede identificar. Se incluyen en estos archivos de MS Office con la nueva extensión -x y archivos comprimidos tgz.
Me pregunto si existe una forma segura de detectar los tipos mime de cualquier archivo dado que existe en un servidor utilizando el código CF para verlo, y el código que se está utilizando funciona en un servidor de producción donde se instalan muy pocas aplicaciones? Entiendo que la primera función a la que hice referencia utiliza la biblioteca tipo mime del sistema operativo, y la segunda utiliza una lista predeterminada en el objeto java para mime-types. La búsqueda en Google y SO no ha producido nada que me diga que CF puede detectar con precisión los tipos de mime de archivo por sí mismo, ni he visto nada que diga que esto no se puede hacer.
Editar: Esto es en un entorno CF8.
IIRC, el tipo de mimo en la carga cffile es el tipo de mimo reportado por el navegador del cliente, que puede o no ser preciso. Siempre existe, porque se requiere que el navegador envíe * algo * incluso si es esencialmente un marcador de posición. –
@Ben, eso es lo que pensé también. La búsqueda en Google reveló resultados que son consistentes con esa explicación. Si puedo encontrar una respuesta aquí, puedo armar una función para verificar en el backend los tipos mimet de archivos cargados para que no tengamos que retroceder y borrar datos más tarde para tipos de mime inconsistentes o incorrectos desde archivos cargados desde usuarios. –