Polecam użyć tylko md5 lub czegokolwiek równoważnego koncepcyjnie. Zmieniając nazwy plików poprzez trawienie ich zawartości, nie tylko nadajesz wyjątkowość (zawsze przechowuj obrazy w pamięci podręcznej tak długo, jak to możliwe, a dzięki zmianie nazwy opartej na zawartości, cóż, w przypadku odpowiedniego, możesz buforować obrazy praktycznie na zawsze).
Również nie jest to wielka sprawa, ale nie jest to czysto hipotetyczny przypadek, gdy różni użytkownicy przesyłają dokładnie ten sam obraz. Zaraz po wyjęciu z pudełka będziesz mieć małą optymalizację przechowywania danych.
Jeśli chodzi o cokolwiek innego zaproponowanego: jak dla mnie, jestem silnym przeciwnikiem utrzymywania wszelkiego rodzaju informacji pomocniczych w nazwie pliku. Kiedy byłem znacznie młodszy (i trochę szczuplejszy), byłem programistą Perla i miałem wątpliwy zwyczaj przechowywania w nazwie pliku tyle informacji pomocniczych, na ile pozwalał mi na to zdrowy rozsądek, ponieważ cechy wzoru łańcucha Perla są niesamowite. Doszedłem do wniosku, że mówiąc o programowaniu stron internetowych, zawsze lepiej jest przechowywać dane powiązane z plikiem osobno od nazwy pliku.
Należy pamiętać, że w dzisiejszych czasach, gdy dominują interfejsy mobilne, rzeczywista nazwa pliku jest mniej ważna niż 5, 10 lat temu. Ale nawet jeśli będzie to miało kluczowe znaczenie w kontekście Twojej aplikacji, zawsze możesz zaangażować się w oldschoolową magię, włączając Content-Disposition: attachment; filename="pretty_file_name.jpg"
nagłówek HTTP, tworząc dowolną odpowiednią nazwę pliku. Ponadto nowoczesne przeglądarki torują drogę do nowego atrybutu HTML5, pobierania . Nie wierzę, że widzenie nazwy obrazu „czytelnego dla człowieka” jest rzeczą, o której powinieneś pomyśleć w większości przypadków.
UPD: Można dokonać modyfikacji, aby nie mieć zbyt wielu plików w jednym katalogu - po prostu weź pierwsze 3 litery i utwórz katalog.