Saya akan merekomendasikan untuk menggunakan hanya md5 atau apa pun yang secara konsep setara. Dengan mengganti nama file dengan mencerna isinya, Anda tidak hanya memberikan keunikan (selalu cache gambar selama mungkin, dan dengan penggantian nama berbasis konten, baik, dengan yang benar, Anda dapat menyimpan gambar secara praktis selamanya).
Juga, bukan masalah besar, tetapi bagaimanapun itu bukan kasus hipotetis murni ketika pengguna yang berbeda mengunggah gambar yang persis sama. Hanya di luar kotak Anda akan memiliki optimasi penyimpanan data kecil.
Adapun hal lain yang diusulkan: seperti untuk saya, saya adalah lawan yang kuat untuk menjaga segala jenis informasi tambahan dalam nama file. Ketika saya masih jauh lebih muda (dan sedikit lebih ramping :), saya telah menjadi seorang pengembang Perl dan memiliki kebiasaan yang meragukan untuk menyimpan sebanyak mungkin informasi tambahan dalam nama file sebagaimana akal sehat memungkinkan saya, karena fitur-fitur pola string Perl sangat mengagumkan. Dan saya sampai pada kesimpulan bahwa, berbicara tentang pengembangan web, selalu merupakan pilihan yang lebih baik untuk menyimpan data yang terkait dengan file secara terpisah dari nama file.
Perlu diingat bahwa saat ini, ketika antarmuka seluler mendominasi, nama file sebenarnya adalah hal yang kurang penting yaitu 5, 10 tahun yang lalu. Tetapi bahkan jika ini akan sangat penting dalam konteks aplikasi Anda, Anda selalu dapat melibatkan beberapa sihir sekolah lama dengan melibatkan Content-Disposition: attachment; filename="pretty_file_name.jpg"
header HTTP, membuat nama file yang relevan yang Anda inginkan. Juga, browser modern membuka jalan untuk atribut HTML5 baru, unduh . Saya tidak percaya bahwa benar-benar melihat nama gambar "dapat dibaca manusia" adalah hal yang harus Anda pikirkan dalam sebagian besar kasus.
UPD: Sebuah modifikasi dapat dilakukan agar tidak memiliki terlalu banyak file dalam satu direktori - cukup ambil 3 huruf pertama dan buat dir.