我有以下照片:
product-1.jpg
product-2.jpg
product-3.jpg
product-4.jpg
我有以下请求(来自jQuery' s sortable
):
行动=保存与照片=相片[] = 4和;相片[] = 2及相片[] = 3及相片[] = 1
我试过这个:
<?php
if($_POST) {
if($_POST['action'] == 'save') {
parse_str($_POST['photos'], $photos);
$id_new = 1;
foreach($photos['photo'] as $id) {
rename(dirname(__FILE__) . '/product-' . $id . '.jpg', dirname(__FILE__) . '/product-' . $id_new . '.jpg');
$id_new++;
}
}
}
?>
但rename
删除了部分照片。
答案 0 :(得分:3)
你有照片ID 4,3,2,1你正在以相反的顺序重命名文件,所以:
这就是为什么你保留较少文件的原因。
正如@ MVG1984在评论中建议的那样,您可以将这些文件重命名为另一个文件夹,如:
$path = dirname(__FILE__);
$tmpPath = $path . '/tmp';
mkdir($tmpPath);
$id_new = 1;
foreach($photos['photo'] as $id) {
rename($path . '/product-' . $id . '.jpg', $tmpPath . '/product-' . $id_new . '.jpg');
$id_new++;
}
for ($i = 1; $i < $id_new; $i++) {
rename($tmpPath . '/product-' . $i . '.jpg', $path . '/product-' . $i . '.jpg');
}
rmdir($tmpPath);