PHP Rename File name if Exists Append Number to End

前端 未结 3 1783
逝去的感伤
逝去的感伤 2021-01-30 23:40

I\'m trying to rename the file name of an image when it\'s uploaded if it exists, say if my file name is test.jpg and it already exists I want to rename it as

相关标签:
3条回答
  • 2021-01-31 00:13

    Here's a minor modification that I think should do what you want:

    $actual_name = pathinfo($name,PATHINFO_FILENAME);
    $original_name = $actual_name;
    $extension = pathinfo($name, PATHINFO_EXTENSION);
    
    $i = 1;
    while(file_exists('tmp/'.$actual_name.".".$extension))
    {           
        $actual_name = (string)$original_name.$i;
        $name = $actual_name.".".$extension;
        $i++;
    }
    
    0 讨论(0)
  • 2021-01-31 00:14

    There are several ways for renaming image in PHP before uploading to the server. appending timestamp, unique id, image dimensions plus random number etc.You can see them all here

    First, Check if the image filename exists in the hosted image folder otherwise upload it. The while loop checks if the image file name exists and appends a unique id as shown below ...

    function rename_appending_unique_id($source, $tempfile){
    
        $target_path ='uploads-unique-id/'.$source;
         while(file_exists($target_path)){
            $fileName = uniqid().'-'.$source;
            $target_path = ('uploads-unique-id/'.$fileName);
        }
    
        move_uploaded_file($tempfile, $target_path);
    
    }
    
    if(isset($_FILES['upload']['name'])){
    
        $sourcefile= $_FILES['upload']['name'];
        tempfile= $_FILES['upload']['tmp_name'];
    
        rename_appending_unique_id($sourcefile, $tempfile);
    
    }
    

    Check more image renaming tactics

    0 讨论(0)
  • 2021-01-31 00:15

    Inspired from @Jason answer, i created a function which i deemed shorter and more readable filename format.

    function newName($path, $filename) {
        $res = "$path/$filename";
        if (!file_exists($res)) return $res;
        $fnameNoExt = pathinfo($filename,PATHINFO_FILENAME);
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
    
        $i = 1;
        while(file_exists("$path/$fnameNoExt ($i).$ext")) $i++;
        return "$path/$fnameNoExt ($i).$ext";
    }
    
    0 讨论(0)
提交回复
热议问题