Сумрачный блог Кирилла Панфилова

Создание уникального имени файла

Допустим, вы решили написать скрипт на PHP, где по мере необходимости к записям или страницам прикрепляются файлы. Пользователь выбирает файл и отправляет его с записью, но может так получиться, что файл с таким именем уже существует в указанной директории. На помощь придёт такая функция:

function specifyName($inf, $where) {
	if($inf['name']==false) {
		$new = 'untitled';
		}
	else {
		$parts = $inf['name'];
		$part1 = substr($parts,0,strrpos($parts,'.'));
		$part2 = substr($parts,strrpos($parts,'.'));
		$new = $part1.$part2;
		while(file_exists($where.'/'.$new)) {
			$new = $part1.'-'.rand(1,999).$part2;
			}
		}
	return $new;
	}

Таким образом, если вы получили данные о файле (например, $filedata = $_FILES['image'];) и знаете, куда будет сохранён файл, то можно вызвать функцию для генерации уникального имени файла:

if(@$_FILES['image']['name']!=false) {
	$filedata = $_FILES['image'];
	$newname = specifyName($filedata, 'images');
	copy($filedata['tmp_name'],'images/'.$newname);
	}

Смысл функции простой: она разбивает имя принимаемого файла на имя и расширение, а если такой файл уже существует, вставляет между ними дефис и случайное число от 1 до 999.


Комментарии