PHP - 将文件移动到服务器上的其他文件夹中

2022-08-30 06:20:09

我需要允许我网站上的用户在上传图像后从服务器中删除他们的图像,如果他们不再需要它们。我以前在PHP中使用该函数,但后来被告知这可能非常危险并且是一个安全问题。(下面的上一个代码:)unlink

if(unlink($path.'image1.jpg')){ 
     // deleted
}

相反,我现在只想将文件移动到另一个文件夹中。这必须在他们首次上传文件后很长一段时间内完成,以便他们随时登录其帐户。如果我有存储用户图像的主文件夹:

user/

然后在其中一个名为del的文件夹,它是放置不需要的图像的目的地:

user/del/

是否有将文件移动到其他文件夹的命令?所以说:

user/image1.jpg

移动到/成为

user/del/image1.jpg

答案 1

该函数执行此操作rename

文档重命名

rename('image1.jpg', 'del/image1.jpg');

如果要将现有文件保留在同一位置,则应使用copy

文档副本

copy('image1.jpg', 'del/image1.jpg');

如果要移动上传的文件,请使用 ,尽管这几乎与该函数相同,但还会检查给定文件是否为通过 上传的文件,这可以防止例如本地文件被移动move_uploaded_filerenamePOST

文档 move_uploaded_file

$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}

来自文档的代码截图


答案 2

使用 rename() 函数。

rename("user/image1.jpg", "user/del/image1.jpg");

推荐