Ich würde empfehlen, nur md5 oder ähnliches zu verwenden. Durch das Umbenennen von Dateien durch Auflösen von Inhalten wird nicht nur die Eindeutigkeit gewährleistet (Bilder immer so lange wie möglich zwischenspeichern, und durch das inhaltsbasierte Umbenennen können Sie Bilder praktisch für immer zwischenspeichern).
Auch das ist keine große Sache, aber es ist kein rein hypothetischer Fall, wenn verschiedene Benutzer genau das gleiche Bild hochladen. Direkt nach dem Auspacken haben Sie eine kleine Optimierung der Datenspeicherung.
Wie für etwas anderes vorgeschlagen: wie für mich, ich bin ein starker Gegner zu halten jede Art von Zusatzinformationen in einem Dateinamen. Als ich viel jünger war (und ein bisschen schlanker :), war ich ein Perl-Entwickler und hatte die zweifelhafte Angewohnheit, so viele Zusatzinformationen im Dateinamen zu speichern, wie es mir der gesunde Menschenverstand erlaubte, da die Perl-String-Pattern-Funktionen fantastisch sind. Und ich bin zu dem Schluss gekommen, dass es im Zusammenhang mit der Webentwicklung immer besser ist, die mit der Datei verknüpften Daten vom Dateinamen getrennt zu halten.
Denken Sie daran, dass heutzutage, wenn mobile Schnittstellen dominieren, der tatsächliche Dateiname eine weniger wichtige Sache ist als vor 5, 10 Jahren. Aber selbst wenn dies im Kontext Ihrer Anwendung von entscheidender Bedeutung ist, können Sie immer ein wenig Old-School-Magie in die Einbindung von Content-Disposition: attachment; filename="pretty_file_name.jpg"
HTTP-Headern mit einbeziehen und einen beliebigen relevanten Dateinamen erstellen. Außerdem ebnen moderne Browser den Weg zum neuen HTML5-Attribut Download . Ich glaube nicht, dass Sie in den meisten Fällen darüber nachdenken sollten, wenn Sie tatsächlich einen von Menschen lesbaren Bildnamen sehen.
UPD: Eine Änderung kann vorgenommen werden, um nicht zu viele Dateien in einem Verzeichnis zu haben. Nehmen Sie einfach den ersten 3 Buchstaben und erstellen Sie das Verzeichnis.