Создание уникального имени файла
Допустим, вы решили написать скрипт на 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.
Комментарии