2013-10-02 34 views
116

我需要允許網站上的用戶在他們上傳圖片後刪除他們的圖片,如果他們不再需要它們。我以前在PHP中使用unlink函數,但後來被告知這可能是相當危險和安全問題。 (以前的代碼如下:)PHP - 將文件移動到服務器上的另一個文件夾中

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

而是我現在想簡單地將文件移動到不同的文件夾。這必須能夠在他們第一次上傳文件後很長時間完成,以便他們在任何時候登錄到他們的賬戶。如果我有一個存儲用戶的圖像(S)的主文件夾:

user/ 

,然後內的一個叫德爾文件夾,這是把自己不需要的圖像目的地:

user/del/ 

是否有命令將文件移動到不同的文件夾?這樣說:

user/image1.jpg 

移動到/變

user/del/image1.jpg 

回答

284

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

一小段代碼片段

+2

太簡單了!謝謝 :) –

62

使用rename()功能。

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

這麼簡單!謝謝:) –

+1

你的麻煩徽章:-) –

0

我想將文件移動到新路徑並保留原始文件名。使用這個:

$source_file = 'foo/image.jpg'; 
$destination_path = 'bar/'; 
rename($source_file, $destination_path . pathinfo($source_file, PATHINFO_BASENAME)); 
相關問題