我尝试了下面的增量器,它首先运行,但后来没有。
例如:
1)上传文件:“picture.png”-----> stores picture.png |行
2)上传文件:“picture.png”----->将picture.png更改为1picture.png |行
3)上传文件:“picture.png”----->不起作用,目录只有上面的2张图片。
if(file_exists($path . $picName)) {
$incrementer = 1;
$path = $path . $incrementer++;
move_uploaded_file($tmp, $path . $picName);
}
为什么它不再增加?
答案 0 :(得分:1)
您需要检查文件是否已经存在,然后更改文件名。为了使filne-name唯一,我主要在文件名之前附加CurrentTime。您也可以使用随机数。
$picName = time().$picName;
while(file_exists($path . $picName))
{
$picName = time().$picName;
}
move_uploaded_file($tmp, $path . $picName);
答案 1 :(得分:0)
您在每次循环迭代时不断重置$incrementer
。你需要在循环之外设置它:
$incrementer = 1;
// start loop
if(file_exists($path . $picName)) {
$path = $path . $incrementer++;
move_uploaded_file($tmp, $path . $picName);
}
// end loop
如果一次只上传一个文件,那么这根本不会作为您的PHP脚本工作,包括您在其中设置的所有变量,每次执行该脚本时都会结束。在这种情况下,您需要将该值保存在数据库,会话或其他(半)持久存储中,以便在脚本执行时可用。
session_start();
if (!isset($_SESSION[incrementer'])
$_SESSION[incrementer'] = 1;
}
if(file_exists($path . $picName)) {
$path = $path . $_SESSION['incrementer']++;
move_uploaded_file($tmp, $path . $picName);
}
答案 2 :(得分:0)
你需要一个while循环:
$incrementer = 1;
$basepath='path/';
$path = $basepath;
while(file_exists($path . $picName)) {
$path = $basepath . ($incrementer++);
}
move_uploaded_file($tmp, $path . $picName);