On my site I let users upload files.
If the file is valid and uploaded it is moved to a folder (using PHP).
All users upload to the same folder.
I think I need to rename the uploaded files.
Is there something like a default naming convention to let users upload files with the same filename?
There are no standard conventions, but there a couple of best-practices:
Organizing your files into (User and/or Date) Aware Folders
Something like:
This will have some benefits:
(Not) Renaming / Sanitizing Filenames
Renaming or not is a choice you will have to make, depending on your website, user base, how obscure you would like to be and, obviously your architecture. Would you prefer to have a file named
kate_at_the_beach.jpgor1304357611.jpg? This is really up to you to decide, but search engines (obviouslly) like the first one better.One thing you should do is always sanitize and normalize the filenames, personally I would only allow the following chars:
0-9,a-z,A-Z,_,-,.– if you choose this sanitation alphabet. normalization basically means just converting the filename to either lower or upper case (to avoid losing files if for instance you switch from a case sensitive file-system to a case insensitive one, like Windows).Here is some sample code I use in phunction (shameless plug, I know 😛):
Handling Duplicate Filenames
As the documentation entry on
move_uploaded_file()states:So, before you call
move_uploaded_file()you better check if the file already exists, if it does then you should (if you don’t want to lose your older file) rename your new file, usually appending a time / random / unique token before the file extension, doing something like this:This will have the effect of inserting the
$tokenbefore the file extension, like I stated above. As for the choice of the$tokenvalue you have several options:time()– ensures uniqueness every second but sucks handling duplicate files(Dummy text so that the next line gets formatted as code.)
Hope it helps! 😉