在不知道名称的情况下移动图像,并使用php

时间:2018-10-19 20:24:53

标签: php move overwrite

我在名为A1的文件夹中有很多图像。使用以下php代码,我可以将单个图像从文件夹A1移至文件夹A2

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

问题是如何在不知道文件名的情况下将图像从A1文件夹移动到A2文件夹而不指定文件名?(A1文件夹中的图像具有各种名称,但都具有.jpg扩展名。 / p>

每次运行php脚本时,都应将下一个图像从A1文件夹移至A2文件夹,并覆盖先前从A1文件夹移至A2文件夹的1.jpg文件。 (图片必须始终重命名为1.jpg)

谢谢

3 个答案:

答案 0 :(得分:2)

使用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');
}

答案 1 :(得分:1)

因此您需要一次移动一幅图像?

我将扫描文件夹中的文件,然后移动一个文件,例如:

$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 */ }

答案 2 :(得分:1)

您可以使用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");
}

此示例将查找所有尚未移动的文件并将其移动。