Я пытался переименовать все файлы (изображения) в папке на моем сайте, но это не работает. файлы не переименованы.
у меня есть поле для ввода имени, я хочу использовать это имя, добавить уникальное имя и переименовать все файлы.
вот код, который я использую:
<?php
if(isset($_POST['submit2'])){
$name = $_POST['name'];
$directory = glob("../basic_images/*.*");
{
if ($file != "." && $file != "..") {
$newName = uniqid().$name;
rename($directory.$file, $directory.$newName);
}}}
?>
кроме того, мне действительно нужно _Post переменная $ name?
Постскриптум Я хочу переименовать все файлы, а затем скопировать их в другую папку.
Вам не нужно отправлять name
glob
возвращает вам все файлы в папке с путем // пример /basic_images/test.jpg
тогда вы просто делаете foreach
перебирать файлы и обновлять их имя.
$path = "../basic_images/";
$directory = glob($path,"*.*");
foreach($directory as $file){
$ext = pathinfo($file, PATHINFO_EXTENSION);
$newName = uniqid().$ext;
rename($file, $path.$newName);
}
узнать больше о glob
: http://php.net/manual/en/function.glob.php
Итак, я наконец-то решил проблему. Теперь вместо того, чтобы переименовывать исходные файлы и затем копировать их в другую папку, я просто создаю новые копии файлов с новыми именами.
Это окончательный код, который работает для меня:
if(isset($_POST['submit'])){
$path = "../posts_images/";
$files = glob("../basic_images/*.*");
foreach($files as $file){
$ext = pathinfo($file, PATHINFO_EXTENSION);
$name = $_POST['new_name'];
$pic = uniqid().$name;
$newName = $pic.'.'.$ext;
copy($file, $path.$newName);
}}
важно использовать $pic.'.'.$ext
потому что без него новые файлы не имеют расширения.