I’ve made an image upload script using the move_uploaded_file function. This function seems to overwrite any preexisting file with the new one. So, I need to check if the target location already has a file. If it does then I need to append something to the filename(before the extension so that the file name is still valid) so the filename is unique. I’d like to have the change be minimal instead of something like appending the datetime, if possible.
How can I do this with PHP?
When uploading files I will nearly always rename them. Typically there will be some kind of database record for that file. I use the ID of that to guarantee uniqueness of the file. Sometimes I’ll even store what the client’s original filename was in the database too but I’ll never keep it or the temporary name because there is no guarantee that information is good, that your OS will support it or that it’s unique (which is your issue).
So just rename it to some scheme of your own devising. That’s my advice.
If you don’t have any database reference, then you could use file_exists() for this but there’s no guarantee that between the time of checking if something exists and moving it that something else won’t use that same filename that you’ll then overwrite. This is a classic race condition.