Bonjour ! Je viens demander un petit conseil concernant l'organisation de photos en PHP pour un site web. Cela fait plusieurs semaines que je n'arrive pas à me décider concernant la structure de mon dossiers "photos". J'ai beau regarder un peu ce qui se fait autour de moi et je trouve que sincèrement le bordel.
Le plus simple serait de donner un ID unique à une photo et de la placer naturellement dans le dossier. Hors, mon script crée de nouvelles images selon les dimensions souhaitées, par exemple, une simple photo uploadé par un utilisateur donne ceci :
/photos/4561345613.jpg
/photos/4561345613-large.jpg
/photos/4561345613-medium.jpg
/photos/4561345613-thumbnail.jpg
Je me dis qu'à force d'envoyer ds images, ça risque d'être très difficile à maintenir surtout que j'autorise les membres d'uploader des photos. Puis je me suis dis, que je pourrais créer un dossier par image, qui ce dernier contiendrais tous les autres fichiers de la photo.
Bien entendu je pourrais créer un structure en fonction de la catégorie :
/photos/users/$username/4561345613.jpg
/photos/users/$username/4561345613-large.jpg
/photos/users/$username/4561345613-medium.jpg
/photos/users/$username/4561345613-thumbnail.jpg
Mais ça m'oblige à écrire un peu plus de code et ce n'est pas forcément plus facile à maintenir et puis où mettre les photos sans catégorie ?
Alors je sèche complètement et je me tâte à tout mettre dans le même dossier… Qu'en pensez-vous ?
En prenant l'exemple de linux.fr, ça donne :
http://img.linuxfr.org/img/ID_TRES_LONG/ID-NAME.jpg
est-ce le meilleur schéma possible ? A quoi correspond le premier ID ?
Merci les amis !
# d'autres pistes
Posté par NeoX . Évalué à 2.
en supposant que tu n'utilises pas une base de données pour referencer tes images,
mais juste des dossiers/fichiers
les images rangées dans des dossiers
Normal/
Large/
Mini/
toutes les photos dans un meme dossier selon leur taille, avec un nom de fichier du style :
date_longue-user-numero.png
avec date_longue qui serait
soit la date de l'upload,
soit la date de la photo, recuperer dans les données EXIF de l'image
avec un formatage : 20150307-13h15
pour pouvoir classer facilement les photos par date.
si tu veux permettre la creation d'un album, tu peux le rajouter
dans le nom du fichier par ex.
date_longue-user-evenement-numero
mais de nos jours, ca me semblerait plus interessant de passer par une petite base de donnée,
ou tu stockes le nom de l'image, quelques infos utiles comme l'auteur, le lieu, et ou tu pourrais ajouter des tags/nom d'album
[^] # Re: d'autres pistes
Posté par shingo (site web personnel) . Évalué à 1. Dernière modification le 07 mars 2015 à 13:34.
Oui, j'ai oublié de préciser que j'utilise une base de données pour tout stocker, voici ma table :
id int(11) Non
title varchar(60) Non
description varchar(100) Oui NULL
category varchar(15) Oui NULL
mime varchar(10) Non
width int(11) Non
height int(11) Non
fileraw varchar(60) Non
filename varchar(60) Non
filesize int(11) Non
fullpath varchar(300) Non
gallery_id int(11) Oui NULL
user_id int(11) Oui NULL
created datetime Non
modified datetime Non
Pour le moment je me suis fait une structure de ce type :
/photos/YEAR/UNIQID/UNIQID-FORMAT.jpg
et j'en ai profité pour créer un tableau de configuration selon les cas, bien que je vais garder le tout générique.
Donc comme tu le souligne à la fin de ton message, quand on a une base de données, inutile d'avoir une structure complexe, vu que toutes les informations sont stockées dans la base de données…
[^] # Re: d'autres pistes
Posté par NeoX . Évalué à 2.
voila oui,
et c'est ton code qui fait le reste,
genre prendre les photos de telle à telle date (c'est un select dans la base de données)
ca recupere les noms des fichiers,
puis dans ta boucle de lecture du resultat, tu mets le chemin mini/large/original selon que tu es en vue miniature, large ou original ;)
# Piste
Posté par Chris K. . Évalué à 2. Dernière modification le 07 mars 2015 à 13:52.
J'ai une méthode assez simple et très efficace :
Je n'enregistre en base de données que les fichiers sources (avec leurs noms original, leurs extensions et quelques autres informations).
Les images redimensionnées sont automatiquement générées si le fichier correspondant à la taille demandée n'existe pas. Et si demain tu changes les tailles correspondant à 'medium', 'large' ou 'thumbnails' ou que tu as besoin d'une autre taille, il n'y a pas de changement à faire dans la structure de tes dossiers, tu changes ton code/conf/variable correspondant à la taille et il te régénère toutes les images dont la taille demandée a changé.
Il est aussi très facile d'y faire le ménage avec la correspondance des ids. Si dans le dossier thumbs une taille est supprimée alors qu'elle n'aurait pas dû l'être cela n'as pas d'autre conséquence que sa régénération lors du prochain affichage de l'image.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.