Генерация уникального имени файла

Рецепт №67. Из книги «128 рецептов php»
Перейти к оглавлению

При разработке часто приходится генерировать множество файлов, как временных, так и постоянных — рабочих. И не редко в связи с этим может возникнуть конфликты при создании файлов, поскольку имена могут совпадать. Чтобы решить эту проблему, можно перед созданием файла, проверять наличие такого имени. И если название уже существует, то приписывать к имени файла префикс, например, так: “123_file_name.txt”.

Пример:

// пример использования
print_r(getUniqName('./files/', 'test_file.txt'));
// при существовании test_file.txt 
// результат будет - 1_test_file.txt

/**
* Получение уникального имени для файла
*
* @param string $path - путь к папке, 
*	где будет проверка
*
* @param string $fileName - исходное имя файла
*
* @return string - уникальное имя файла
*/
function getUniqName($path, $fileName){    
	$num = 1; // счетчик
	// проверяем, существует ли файл с таким именем
	if(file_exists($path . $fileName)) {   
		// добавляем префикс и проверяем 
		// наличие файла с таким именем
		while(file_exists($path.$num.'_'.$fileName)){
			$num ++;
		}  
		return $num . '_' . $fileName;
	}else{
		return $fileName;
	}
}

В этом примере была использована, ранее не описанная функция — file_exists, она осуществляет проверку существования файла.

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*