переместить изображение, не зная имени и переписать изображение с помощью php - PullRequest
0 голосов
/ 19 октября 2018

У меня много изображений в папке с именем A1.Используя следующий php-код, я могу переместить одно изображение из папки A1 в папку A2

<?php
rename("/A1/1.jpg", "/A2/1.jpg");
?>

. Вопрос в том, как переместить изображение, не зная его имени, из папки A1 в папку A2 безуказание имени файла? (изображения в папке A1 имеют разные имена, но имеют расширение .jpg.

Каждый раз, когда запускается php-скрипт, он должен перемещать следующее изображение из папки A1 в папку A2 иперезаписать файл 1.jpg, который ранее был перемещен из папки A1 в папку A2 (изображение всегда должно быть переименовано в 1.jpg)

Спасибо

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

То есть вам нужно перемещать одно изображение за раз?

Я бы просканировал папку на наличие файлов и переместил один файл, например:

$from = '/A1';
$files = scandir($from);

$to = '/A2';
if (!empty($files[2])) {
    rename("{$from}/{$files[2]}", "{$to}/{$files[2]}");
}

Я использовал индекс 2 массива $files, потому что всегда будет 0 и 1 элементов вэтот массив установлен

[0] => .
[1] => ..

, поэтому, если существует $files[2], мы перемещаем его.

Если вам нужно переместить все файлы за один раз, сделайте это в цикле, как

foreach($files as $file) { /* move */ }
0 голосов
/ 19 октября 2018

Вы можете выполнить поиск / распечатку файлов в каталоге с помощью функции glob

///EXAMPLE
glob('/a1/*.jpg');

//retruns something like the followin array
['test.jpg', 'example.jpg']

И затем вы можете просто зациклить имена файлов, соответствующие шаблону, следующим образом:

$filesAlreadyMoved= glob('/a2/*.jpg');
$filesFound = glob('/a1/*.jpg');

$filesNotMovedYet = array_diff($filesFound, $filesAlreadyMoved)

foreach ($filesNotMovedYet as $file) {
   //rename is used in the example iven so i will also.
   rename("/A1/1.jpg", "/A2/1.jpg");
}

Этот пример найдет все файлы, которые еще не были перемещены, и переместит их.

0 голосов
/ 19 октября 2018

Это просто с glob () .Примеры:

Если вы хотите переместить все файлы одновременно:

$files = glob('A1/*.jpg');
foreach ($files as $file) {
    $filename = basename($file);
    rename($file, "A2/$filename");
}

Если вы хотите переместить их один за другим к целевому имени файла 'A2 / 1.jpg':

$files = glob('A1/*.jpg');
if (count($files) > 0) {
    rename($file, 'A2/1.jpg');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...