2008-12-01 3 views
5

Quelles sont les meilleures pratiques concernant le stockage des fichiers importés par les utilisateurs?Meilleures pratiques pour stocker les fichiers téléchargés dans le système de fichiers

Actuellement, je suis au cours de la méthode suivante pour le stockage des fichiers:

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

Comme vous pouvez le voir, les fichiers sont stockés en fonction des clés dans la base de données. Je pensais que c'était plus sûr, puisque je n'aurais pas à filtrer les noms de fichiers et à transformer les caractères dangereux en caractères sûrs.

Cependant, je commence un nouveau projet et je voulais savoir si c'était une mauvaise idée de lier si étroitement le système de fichiers d'une application web avec une base de données. Devrais-je stocker les fichiers dans un format plus lisible?

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

Si oui, quels sont les meilleurs moyens de filtrer les noms de fichiers pour être sûr? Ou est la façon dont je le fais actuellement une bonne pratique?

Répondre

0

Je vous suggère de sortir ensuite de web_app_root. J'aime ce que vous faites dans le premier exemple.

+0

Tant que le répertoire de fichiers est hors du répertoire htdocs, tout devrait bien se passer? Je veux juste garder tout ce qui concerne un projet spécifique dans son propre répertoire. – rlorenzo

+0

En effet parlant de sécurité. Mais un disque séparé est la meilleure solution. – user32415

1

J'ai toujours simplement stocké les fichiers dans un répertoire avec des noms de fichiers uniques basés sur GUID, et mappé le guid sur le fichier dans la base de données. Tant que vous ne parcourez pas manuellement les fichiers et autres, c'est probablement la solution la plus simple (contourne également les caractères invalides).

Une autre option consiste à les stocker en tant que BLOBS dans la base de données. Je l'ai également fait - mais c'était pour remplir un scénario DR répliqué, que les périphériques NAS modernes devraient gérer. Si vous voyez le besoin de parcourir manuellement les fichiers en dehors de l'application pour une raison quelconque, alors utiliser le nom long ou court (quel que soit le type de navigation que vous souhaitez parcourir) serait plus propre.

Questions connexes