首页 文章

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

提问于
浏览
145

我需要允许我的网站上的用户在上传后将其图像从服务器上删除,如果他们不再需要它们的话 . 我以前在PHP中使用 unlink 函数,但后来被告知这可能存在风险并且存在安全问题 . (上面的代码:)

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

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

user/

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

user/del/

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

user/image1.jpg

移动到/成为

user/del/image1.jpg

5 回答

  • 0

    如果要在保留原始文件名的情况下在新路径中移动文件 . 用这个:

    $source_file = 'foo/image.jpg';
    $destination_path = 'bar/';
    rename($source_file, $destination_path . pathinfo($source_file, PATHINFO_BASENAME));
    
  • 75

    一些解决方案是首先复制()文件(如上所述)和目标文件存在时 - unlink()文件与之前的本地化 . 此外,您可以在取消链接之前验证MD5校验和,以确保

  • -3

    shell_exec('mv filename dest_filename');

  • 7

    rename 函数执行此操作

    docs rename

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

    如果你想将现有文件保存在同一个地方你应该使用 copy

    docs copy

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

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

    docs 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");
        }
    }
    

    code snipet from docs

  • 338

    使用rename()功能 .

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

相关问题