Php 重命名上传的文件有错误吗?

Php 重命名上传的文件有错误吗?,php,Php,下面是我用来将文件上传到目录的代码。它很好用。我的主要问题是: 我已尝试在以下方面这样做: function get_unique_filename($name) { $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); $date = new DateTime(); $date= $date->getTimestamp(); $newname ="bogen_". substr(hash('ripe

下面是我用来将文件上传到目录的代码。它很好用。我的主要问题是:

我已尝试在以下方面这样做:

function get_unique_filename($name) { 
   $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); 
   $date = new DateTime();
   $date= $date->getTimestamp();
   $newname ="bogen_". substr(hash('ripemd160',$date),0,12) .".".$imgExt;  
   return $newname;
}

function upload(){ 
    $valid_formats = array("jpg", "png"); 

    $max_file_size = 1024*3000;  

    $path = "../uploads/images/";

    $count = 0;


    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){

        foreach ($_FILES['files']['name'] as $f => $name){ 
            if ($_FILES['files']['error'][$f] == 4) {
                continue;  
            } 
            if ($_FILES['files']['error'][$f] == 0) {           
                if ($_FILES['files']['size'][$f] > $max_file_size) {
                    $message[] = "$name is too large!.";
                    continue;  
                }
                elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
                    $message[] = "$name is not a valid format";
                    continue; // Skip invalid file formats
                }

                // No error found! Move uploaded files 
                else{  
 if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$this->get_unique_filename($name))){
                        $count++; // Number of successfully uploaded file

                        // save name to database
                        $this->name = $newname;

                        if($this->create()){
                            // successfully added to databaes
                        }
                    }
                }
            }
        }
    }
}
上载多个文件时,我将获得相同的文件名和文件…如何修复它:
中获取唯一的文件名($name)

+添加:
sleep(1)


get\u unique\u filename($name)

+添加:
sleep(1)


您必须检查是否存在同名文件,如果存在,则必须重命名该文件

function get_unique_filename($name) { 
   $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); 
   $date = new DateTime();
   $date = $date->getTimestamp();
   $dir = "../uploads/images/";
   $i = 0;
   do {
       $newname ="bogen_". substr(hash('ripemd160',$date),0,12);  
       $image_name = $newname . ($i > 0 ? "_($i)" : "") . "." . $imgExt;
       $i++;
       $path = $dir . $image_name;
   } while(file_exists($path));
   return $newname;
}

您必须检查是否存在同名文件,如果存在,则必须重命名该文件

function get_unique_filename($name) { 
   $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); 
   $date = new DateTime();
   $date = $date->getTimestamp();
   $dir = "../uploads/images/";
   $i = 0;
   do {
       $newname ="bogen_". substr(hash('ripemd160',$date),0,12);  
       $image_name = $newname . ($i > 0 ? "_($i)" : "") . "." . $imgExt;
       $i++;
       $path = $dir . $image_name;
   } while(file_exists($path));
   return $newname;
}