Подтвердить что ты не робот

PHP - переместить файл в другую папку на сервере

Мне нужно разрешить пользователям на моем сайте удалять их изображения с сервера после их загрузки, если они больше не хотят их. Ранее я использовал функцию unlink в PHP, но с тех пор мне сказали, что это может быть довольно рискованно и проблема с безопасностью. (Предыдущий код ниже:)

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

Вместо этого теперь я хочу просто переместить файл в другую папку. Это должно быть сделано в течение длительного времени после того, как они сначала загрузили файл, чтобы в любое время они вошли в свою учетную запись. Если у меня есть основная папка, в которой хранятся изображения пользователей:

user/

а затем внутри этой папки, называемой del, которая предназначена для размещения своих нежелательных изображений:

user/del/

Есть ли команда для перемещения файла в другую папку? Итак, скажите:

user/image1.jpg

перемещается в/становится

user/del/image1.jpg
4b9b3361

Ответ 1

Функция rename делает это

docs переименовать

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

Если вы хотите сохранить существующий файл в том же месте, вы должны использовать 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");
    }
}

код snipet из документов