Когда пользователь загружает фотографию, он проверяет, есть ли у них один; и если они это сделают, я хочу удалить старый (который может иметь любое расширение), а затем добавить новый. Есть ли способ сделать это без получения старого расширения из базы данных? Код на данный момент:
$del = $members->prepare("insert into profiles(userid, path, width, height, type, rtu, ext) values(?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE path = ?, width = ?, height = ?, type = ?, rtu = ?, ext = ?, time = NOW()"); $del->bind_param('sssssssssssss', $_SESSION['token'], $title, $file_info[0], $file_info[1], $file_info[2], $rh, $extension, $title, $file_info[0], $file_info[1], $file_info[2], $rh, $extension); $del->execute(); $new_file_name = "bb-x".$_SESSION['token'].".".$extension; if ($del->affected_rows > 0) { unlink('profiles/bb-x62'<any extension>); } $move_file = move_uploaded_file($file['tmp_name'], $upload_image_to_folder.$new_file_name);
Вместо unlink('profiles/bb-x62'<any extension>);
Используйте эти две строки:
$file_pattern = "profiles/bb-x62.*" // Assuming your files are named like profiles/bb-x62.foo, profiles/bb-x62.bar, etc. array_map( "unlink", glob( $file_pattern ) );
Это должно делать свое дело.
Вы можете получить список файлов с сервера в соответствующем каталоге и найти его для записи с тем же именем файла вплоть до точки и расширения. Возьмите полное имя файла из данных сервера и удалите этот файл. Существует некоторый риск удаления очень похожего имени файла, но вы можете создавать проверки для определения имени файла, за исключением расширения.
Похоже, что получить полное имя файла из базы данных может быть меньше проблем и нагрузки на сервере …