Stratégies de stockage de fichiers pour un site Web d'hébergement Web

StackOverflow https://stackoverflow.com/questions/80561

  •  09-06-2019
  •  | 
  •  

Question

Je vais héberger les fichiers que l'utilisateur a soumis. J'ai besoin de récupérer des données du fichier, puis de les déplacer dans un répertoire.

Il existe deux points d’intérêt pour la durée de vie de ce fichier. La première est celle qui consiste à extraire les données et la seconde, celle qui consiste à archiver le fichier pour pouvoir le partager.

Lorsque les données sont extraites, j'ai pensé que renommer le fichier en quelque chose d'unique ou ajouter une chaîne unique à nomfichier pour l'empêcher d'écraser d'autres fichiers existants.

Lorsque le fichier doit être archivé, j'ai envisagé trois stratégies. L'une consiste à conserver tous les fichiers téléchargés d'une donnée donnée dans un dossier. (2006 / sept / 04, 2008 / jan / 05) L’autre consiste à conserver un dossier et à le remplir jusqu’à un nombre maximal de fichiers que je souhaite conserver dans un dossier, puis à en créer un autre (/ folder001 /, / folder002 /, / folder003 /, etc ..). Une autre consiste à créer des sous-dossiers une fois qu'ils ont atteint un certain seuil. Donc, comme (/ j / jd / jde / jdelator), j’ai vu cela sous unix sans savoir comment l'expliquer.

La question que je me pose est quel genre de stratégies que vous avez trouvé utiles ou utilisées?

Était-ce utile?

La solution

Lorsque les données sont extraites, je choisirais quelque chose comme: nomfichier + millisec (); Il est peu probable que deux appels à millisec soient identiques, et le nom de fichier est plus convivial lors de l'accès.

La stratégie de date peut être pratique si vous décidez de supprimer les fichiers anciens et inutilisés: vous devez uniquement récupérer le dossier 2006 et supprimer tout ce qui n’a pas été consulté au cours de la dernière année, selon votre journal. Cela peut aussi être une bonne indication pour vos utilisateurs, car ils sauront s’il s’agit d’un fichier récent ou non. Le dossier XYZ n’est qu’une variante de celui-ci, remplaçant la date par une balise pour chaque N. fichiers.

Les sous-dossiers de seuil vous permettent de limiter le nombre d'entrées de vos répertoires afin de faciliter l'accès. Notez que cette solution nécessite parfois de déplacer des fichiers (puis de casser des URL si non mappés) lorsqu'un répertoire particulier s'agrandit.

Une autre possibilité consiste à utiliser une base de données avec l'UID correspondant à l'emplacement du nom de fichier et à accéder au fichier via http: / /server.com/UID/filename.txt . Ainsi, l’utilisateur enregistre le fichier sous " nomfichier.txt " ce qui lui convient, et vous savez avec l'URL où trouver le fichier (en utilisant la base de données pour transformer l'UID en emplacement). Notez que l’UID peut être une somme de contrôle (MD5, SHA-1) permettant de gérer les doublons du même fichier.

Autres conseils

Je voterais avec guid dans une base de données, puis utiliserais l'en-tête Content-Disposition pour le renvoyer au nom de fichier d'origine, si nécessaire. Une des choses que je préconiserais, c'est que les dossiers que vous utilisez soient stockés en dehors de la racine Web. vous ne souhaitez pas que les utilisateurs téléchargent des fichiers dans vos dossiers d'application.

J'ai utilisé une base de données relationnelle avec les tags ID (int) à uuids qui sont le nom des fichiers. De cette façon, peu importe comment ils sont sur le disque. Cela m'aide à obscurcir les fichiers. De même, je peux ensuite utiliser les commandes JOIN pour "renommer". le fichier arbitrairement. De plus, je peux utiliser différents fichiers "noms". Tout dépend de votre application et de son emplacement.

Bien que cela dépende de votre application, etc., je vous conseillerais de garder le schéma de référentiel de fichiers très simple pour le moment et de choisir une stratégie plus élaborée ultérieurement. En d'autres termes, vous créez une sorte de "chaos géré". pour un moment; la structure et la stratégie apparaîtront plus tard, lorsque vous découvrirez toutes les exigences et les spécificités du domaine. En restant simple, vous pouvez tout changer facilement.

Quoi qu'il en soit, le changement est inévitable, la meilleure chose à faire est de choisir une stratégie et de tout documenter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top