我在名为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)
谢谢
答案 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");
}
此示例将查找所有尚未移动的文件并将其移动。