PHP - move_uploaded_file无法复制同一文件夹

时间:2015-12-16 05:28:58

标签: php file-upload

重写照片文件时遇到一些麻烦。我需要将文件名重写为随机字符串。文件上传很好 - 我似乎无法复制文件并将文件名重写为随机字符串。该文件将保留在目录中。

该函数工作正常,我可以在数据库中重写文件名,但它不会重写文件夹中的实际文件。文件夹权限是rwxr-xr-x(755)。

有什么想法吗?

function AfterUpdate(){
    $file = $this->file_attachment;
    $path_parts = pathinfo($file);
    $newFilename = $path_parts['dirname'] . "/" . uniqid() . "." . $path_parts['extension'];

    $file_src = $_SERVER['DOCUMENT_ROOT'] . $file; 
    $newfile_src = $_SERVER['DOCUMENT_ROOT'] . $newFilename; 
    if (move_uploaded_file($file_src, $newfile_src)){
        $this->file_attachment = $newFilename;
    }
}

2 个答案:

答案 0 :(得分:0)

$newFilename包含一个路径位置,我想通过查看$path_parts['dirname'] . "/" . uniqid() . "." . $path_parts['extension'];

$newFilename应该是带扩展名的新文件名。 move_uploaded_file只会将文件从一个文件夹移动到另一个文件夹或相同的文件夹中。但是不会为你创建一个文件夹。

答案 1 :(得分:0)

简单修复。将move_uploaded_file替换为rename。该文件不会被移动,只是重命名。

    $file = $this->file_attachment;
    $path_parts = pathinfo($file);
    $newFilename = $path_parts['dirname'] . "/" . uniqid() . "." . $path_parts['extension'];

    $file_src = $_SERVER['DOCUMENT_ROOT'] . "/" . $file; 
    $newfile_src = $_SERVER['DOCUMENT_ROOT'] . "/" . $newFilename; 
    if (rename($file_src, $newfile_src)){
        $this->file_attachment = $newFilename;
    }