2008-12-01 10 views
5

¿Cuáles son las mejores prácticas para almacenar archivos cargados de usuarios?Mejores prácticas para almacenar archivos cargados en el sistema de archivos

Actualmente, soy durante el siguiente método para almacenar archivos:

<web_app_root>/course_material/<term_id>/<course_id>/<file_id> 

Como se puede ver, los archivos se almacenan de acuerdo con las llaves en la base de datos. Pensé que esto era más seguro, ya que no tendría que filtrar los nombres de los archivos y convertir los caracteres no seguros en caracteres seguros.

Sin embargo, estoy comenzando un nuevo proyecto y quería saber si era una mala idea vincular el sistema de archivos de una aplicación web tan de cerca con una base de datos. ¿Debo almacenar archivos en un formato legible para humanos?

<web_app_root>/course_material/<term_name_underscored>/<course_name_underscored>/<file_name_underscored> 

Si es así, ¿cuáles son las mejores formas de filtrar los nombres de los archivos para estar seguros? ¿O la forma en que lo estoy haciendo actualmente es una mejor práctica?

Respuesta

0

Le sugiero que saque luego de la web_app_root.

Me gusta la forma en que lo hace en el primer ejemplo.

+0

Mientras el directorio de archivos esté fuera del directorio htdocs, todo debería estar bien ¿no? Solo quiero mantener todo lo relacionado con un proyecto específico en su propio directorio. – rlorenzo

+0

Hablando de seguridad. Pero un disco separado es la mejor solución. – user32415

1

Siempre acabo de almacenar los archivos en un directorio con nombres de archivo únicos basados ​​en GUID, y correlacioné el guid con el archivo en el DB. Siempre que no esté navegando manualmente por los archivos y tal, esta es probablemente la solución más fácil (también evita los caracteres inválidos).

Otra opción es almacenarlos como BLOBS en la base de datos. También hice esto, pero fue para llenar un escenario DR replicado, que los dispositivos NAS modernos deberían manejar.

Si ve la necesidad de examinar manualmente los archivos fuera de la aplicación por alguna razón, entonces usar el nombre largo o corto (como quiera que desee examinarlos) sería más claro.

Cuestiones relacionadas