如何在php中重命名文件?

时间:2014-04-12 05:53:11

标签: php

我正在尝试重命名该文件,如果存在,该文件将成功移动但新文件名将为0.仅当我手动将.png添加到名称时才会显示该文件。我无法让php正确重命名文件。

我已尝试过很多关于堆栈溢出的建议方法,但未被移动的文件将被重命名为0. a

让我知道我的代码有什么问题我将不胜感激,请不要回答说我必须先做我的研究,然后写在这里,就像我已经做的那样但是我没有运气想出来自己。

PHP

$i = 0;
$extension = pathinfo($name, PATHINFO_EXTENSION);
$actual_name = pathinfo($name,PATHINFO_FILENAME);
$original_name = $actual_name;

while(file_exists('../cutomeruploads/'.$actual_name.".".$extension))
{           
$actual_name = (string)$original_name;
$actual_name = $actual_name.(string)$i;
$name = $actual_name.".".$extension;
$i++;
}


if(move_uploaded_file($_FILES['upl']['tmp_name'], '../cutomeruploads/'.$name)){
    $picname = $_FILES['upl']['name'];

    echo '{"status":"success"}';
    exit;
  }

4 个答案:

答案 0 :(得分:3)

您是否尝试过php的重命名功能?

rename("The existing file name", "the new name");

答案 1 :(得分:1)

在php中重命名文件非常简单。

rename("oldfile.ext","newname.ext");

有关详细信息,请参阅:http://us3.php.net/rename

答案 2 :(得分:0)

试试这个。

/*
 * $dir - Directory path to check where the file is exist 
 * $filename - contains only name of the file
 * 
 */
public static function getFileName($dir, $filename) {

    // If name contains any white space replace with '-'
    $filename = str_replace(" ", "-", $filename);

    $filePath = $dir . $filename;

    $fileInfo = pathinfo($filePath);
    $i = 0;
    $flag = false;

    while(file_exists($filePath)) {
        $filePath = $dir . $fileInfo['filename'] . "_" . $i . "." . $fileInfo['extension'];
        $i++;
        $flag = true;
    }
    if($flag === TRUE)
        return $fileInfo['filename'] . "_" . $i . "." . $fileInfo['extension'];
    else
        return $fileInfo['filename'] . "." . $fileInfo['extension'];

}

如果已存在,则返回新的filename

例如,image.jpg已经存在,它会自动添加image_1.jpgimage_2.jpg等等。

答案 3 :(得分:0)

这些更改将文件重命名为xx1.ext xx2.ext

注意:xx = $ orDi

$actual_name = pathinfo($_FILES['upl']['name'], PATHINFO_FILENAME);
$extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
while(file_exists('../cutomeruploads/'.$actual_name.".".$extension))
{ 
 $i++;          
$actual_name = (string)$orDi.(string)$i;
}

if(move_uploaded_file($_FILES['upl']['tmp_name'], '../cutomeruploads/'.$actual_name.".".$extension)){
    $picname = $actual_name.".".$extension;