php upload isset并重命名文件(如果存在)

时间:2015-10-21 09:56:58

标签: php file-upload

我知道,这个问题有很多解决方案,但不幸的是我无法解决,这是我的上传代码:

 public static function upload(&$file, $destinationDir = "", $destinationName = "", $secure = true)
  {
$ret = false;

if (isset($file['tmp_name']) && isset($file['name']))
{
  if ($destinationName == '')
  {
    $destinationName = $file['name'];
  }
  $destinationFile = $destinationDir . '/' . $destinationName;

  if (move_uploaded_file($file['tmp_name'], $destinationFile))
  {
    if ($secure)
    {
      chmod($destinationFile, 0644); // without execution permissions if it is possible
    }
    $ret = true;
  }
}

return $ret;
  }

1:如何在上传到服务器时重命名文件?

2:如果文件名存在,那么如何自动重命名?

提前致谢

1 个答案:

答案 0 :(得分:1)

在这种情况下使用 file_exists

 public static function upload(&$file, $destinationDir = "", $destinationName = "", $secure = true){
$ret = false;

if(isset($file['tmp_name']) && isset($file['name'])){
  if ($destinationName == ''){
    $destinationName = md5($file['name']);
  }
  $destinationFile = $destinationDir.'/'.$destinationName;

  if(file_exists($destinationFile)){
      // Change the destination file name if it exists
      $destinationFile = $destinationDir.'/'.md5($destinationName.rand());
  }

  if (move_uploaded_file($file['tmp_name'], $destinationFile)){
    if($secure){
      chmod($destinationFile, 0644); // without execution permissions if it is possible
    }
    $ret = true;
  }
}

注意:
move_uploaded_file - 将上传的文件移动到新位置 结构如下

bool move_uploaded_file ( string $filename , string $destination )

$destination参数中,您可以指定新上传文件的名称。将文件命名为唯一的文件。无论如何!所以不要担心这个