Как автоматически переименовать имена файлов изображений при загрузке?

Вот мой код функции загрузки:

function upload(&$file, $destinationDir = "", $destinationName = "", $secure = true){
$ret = false;
if (isset($file['tmp_name']) && isset($file['name'])){
if ($destinationName == ''){
$destinationName = $file['name'];
}

$destinationFile = $destinationDir . '/' . $destinationName;
if (move_uploaded_file($file['tmp_name'], $destinationFile)){
if ($secure){
chmod($destinationFile, 0644);
}

$ret = true;
}
}

return $ret;
}

Эта функция не может автоматически переименовывать имена файлов, если имена двух файлов совпадают, новый файл изображения будет заменен на существующий файл.

Как я могу изменить эту функцию, чтобы переименовать файлы автоматически при загрузке на сервер?

большое спасибо

-1

Решение

Получить расширение:

//Get extension
$ext = pathinfo($file["name"], PATHINFO_EXTENSION);

Затем измените эту строку:

$destinationName = $file['name'];

к комбинации sha1 хеш файла, добавляемого к метке времени, с расширением:

$destinationName = sha1_file($file["tmp_name"]).time().".".$ext;
1

Другие решения

Используйте что-то вроде этого:

$destionationFile = $destinationDir . '/' . $destinationName;
if(is_file($destinationFile))
{
$destinationName = basename($destinationName).'_'.hash('sha256', time().rand(9999, 999999)).'.'.pathinfo($destinationName)['extension'];
$destionationFile = $destinationDir . '/' . $destinationName;
}
0

По вопросам рекламы [email protected]