PHP – Mova um arquivo para uma pasta diferente no servidor

Preciso permitir que os usuários no meu site excluam suas imagens do servidor depois de terem carregado se não quiserem mais. Eu estava anteriormente usando a function de unlink no PHP, mas desde então tenho dito que isso pode ser bastante arriscado e um problema de segurança. (Código anterior abaixo 🙂

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

Em vez disso, agora quero simplesmente mover o arquivo para uma pasta diferente. Isso deve ser feito há muito tempo depois de terem subido o arquivo pela primeira vez, então, quando entrarem em sua conta. Se eu tiver a pasta principal que armazena as imagens dos usuários:

 user/ 

e então dentro disso uma pasta chamada del que é o destino para colocar suas imagens indesejadas:

 user/del/ 

Existe um comando para mover um arquivo para uma pasta diferente? Então, diga:

 user/image1.jpg 

move-se para / se torna

 user/del/image1.jpg 

A function rename faz isso

doações renomear

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

Se você deseja manter o arquivo existente no mesmo lugar, use a copy

docs copy

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

Se você deseja mover um arquivo carregado, use o arquivo move_uploaded_file , embora seja quase o mesmo que rename essa function, também verifica se o arquivo dado é um arquivo que foi carregado via POST , isso impede, por exemplo, que um arquivo local seja movido

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

código snipet de docs

Use a function rename () .

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

Eu quero mover o arquivo no novo caminho com o nome do arquivo original. usa isto:

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