在不知道名称的情况下移动图像并用 php 覆盖图像
move image without knowing name and overwrite image with php
我在名为 A1 的文件夹中有很多图像。使用以下 php 代码,我可以将单个图像从文件夹 A1 移动到文件夹 A2
<?php
rename("/A1/1.jpg", "/A2/1.jpg");
?>
请问如何在不指定文件名的情况下将不知道名称的图像从A1文件夹移动到A2文件夹?(A1文件夹中的图像有各种名称,但都是.jpg扩展名.
每次 php 脚本 运行 它应该将下一张图像从 A1 文件夹移动到 A2 文件夹并覆盖之前从 A1 文件夹移动的 1.jpg 文件到 A2 文件夹。 (图像必须始终重命名为 1.jpg)
谢谢
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');
}
所以您需要一次移动一张图片?
我会扫描文件夹中的文件并移动一个文件,例如:
$from = '/A1';
$files = scandir($from);
$to = '/A2';
if (!empty($files[2])) {
rename("{$from}/{$files[2]}", "{$to}/{$files[2]}");
}
我使用了 $files
数组的索引 2
因为在那个数组集合中总会有 0 和 1 元素
[0] => .
[1] => ..
所以如果 $files[2]
存在我们移动它。
如果您需要移动所有文件,请像
一样循环执行
foreach($files as $file) { /* move */ }
您可以使用 glob 函数完成 finding/listing 目录中的文件
///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");
}
此示例将找到所有尚未移动的文件并移动它们。
我在名为 A1 的文件夹中有很多图像。使用以下 php 代码,我可以将单个图像从文件夹 A1 移动到文件夹 A2
<?php
rename("/A1/1.jpg", "/A2/1.jpg");
?>
请问如何在不指定文件名的情况下将不知道名称的图像从A1文件夹移动到A2文件夹?(A1文件夹中的图像有各种名称,但都是.jpg扩展名.
每次 php 脚本 运行 它应该将下一张图像从 A1 文件夹移动到 A2 文件夹并覆盖之前从 A1 文件夹移动的 1.jpg 文件到 A2 文件夹。 (图像必须始终重命名为 1.jpg)
谢谢
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');
}
所以您需要一次移动一张图片?
我会扫描文件夹中的文件并移动一个文件,例如:
$from = '/A1';
$files = scandir($from);
$to = '/A2';
if (!empty($files[2])) {
rename("{$from}/{$files[2]}", "{$to}/{$files[2]}");
}
我使用了 $files
数组的索引 2
因为在那个数组集合中总会有 0 和 1 元素
[0] => .
[1] => ..
所以如果 $files[2]
存在我们移动它。
如果您需要移动所有文件,请像
一样循环执行foreach($files as $file) { /* move */ }
您可以使用 glob 函数完成 finding/listing 目录中的文件
///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");
}
此示例将找到所有尚未移动的文件并移动它们。