Создание имени файла с использованием хэша текущего имени файла и микротайма (метка времени unix с микросекундами), который никогда не повторяется.
Например
$fileName = hash( 'sha512', $_FILES['file_upload2']['name'] . microtime() );
, который вернет вам что-то вроде
a1758196cd3949485509be0d423d1ff85ada7857ab77cd77f6666107fce5b45dca01e42563f2925f136b677a7d169e100663c4eb705ccd742b8d3885d24ac005
Затем вы можете добавить свое расширение файла обратно в конце, и это будет уникальное имя файла.
$fileName = $_FILES['file_upload2']['name'];
$fileSplit = explode( '.', $fileName );
$fileName = hash( 'sha512', $fileName . microtime() ) . '.' . end( $fileSplit );
Вы попросили меня привести пример с использованием вашего кода. Однако, если бы я сделал это, ты бы ничему не научился. Итак, вот что вам нужно сделать, чтобы заставить это работать.
Создать функцию с предоставленным моим кодом. Назовите это как generateUniqueFileName()
function generateUniqueFileName( $currentFileName = "" ){
}
Внутри этой функции поместите код, который создает уникальный хэш имени файла
function generateUniqueFileName( $currentFileName = "" ){
//Explode the file name, so that we can get the file extension
$fileSplit = explode( '.', $currentFileName );
//Generate a unique name hash
$fileName = hash( 'sha512', $currentFileName . microtime() ) . '.' . end( $fileSplit );
//Return the unique file name hash
return $fileName;
}
Если вы вызываете функцию move_uploaded_file()
, замените второй параметр, чтобы использовать эту новую функцию для создания нового имени файла. Я сделал первый для вас.
move_uploaded_file($_FILES['file_upload']['tmp_name'], 'uploaded_files/' . generateUniqueFileName( $_FILES['file_upload']['name'] ) );
Удачи, если у вас есть какие-либо вопросы, пожалуйста, задавайте их в комментариях, и я сделаю все возможное, чтобы ответить.