第一次尝试后不会增加php

时间:2014-04-26 20:44:44

标签: php upload increment

我尝试了下面的增量器,它首先运行,但后来没有。

例如:

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);
}

为什么它不再增加?

3 个答案:

答案 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);