Je recommanderais d'utiliser juste md5 ou quelque chose d'équivalent conceptuel. En renommant les fichiers en résumant leur contenu, vous n'accordez pas seulement l'unicité (mettez toujours les images en cache aussi longtemps que possible, et avec un changement de nom basé sur le contenu, eh bien, avec un bon, vous pouvez mettre les images en cache pratiquement pour toujours).
De plus, ce n'est pas grave, mais ce n'est pas un cas purement hypothétique lorsque différents utilisateurs téléchargent exactement la même image. Tout juste sorti de la boîte, vous aurez une petite optimisation du stockage des données.
En ce qui concerne toute autre proposition: quant à moi, je suis un adversaire ferme de conserver toute sorte d'informations auxiliaires dans un nom de fichier. Quand j'étais beaucoup plus jeune (et un peu plus mince :), j'étais un développeur Perl et j'avais l'habitude douteuse de stocker autant d'informations auxiliaires dans le nom de fichier que le bon sens me le permettait, car les fonctionnalités de modèle de chaîne Perl sont impressionnantes. Et je suis arrivé à la conclusion que, en parlant de développement Web, il est toujours préférable de conserver les données associées au fichier séparément du nom de fichier.
Gardez à l'esprit que de nos jours, lorsque les interfaces mobiles dominent, le nom de fichier réel est une chose moins importante qu'il y a 5, 10 ans. Mais même si cela est crucial dans le contexte de votre application, vous pouvez toujours impliquer de la magie de la vieille école avec un Content-Disposition: attachment; filename="pretty_file_name.jpg"
en-tête HTTP impliquant , en construisant le nom de fichier approprié que vous souhaitez. En outre, les navigateurs modernes ouvrent la voie au nouvel attribut HTML5, le téléchargement . Je ne pense pas que voir un nom d'image "lisible par l'homme" soit une chose à laquelle vous devriez penser dans la majorité des cas.
UPD: Une modification peut être effectuée afin de ne pas avoir trop de fichiers dans un répertoire - il suffit de prendre les 3 premières lettres et de créer dir.