2013-10-02 17 views
116

自分のウェブサイトのユーザーが、不要になったアップロード済みの画像をサーバーから削除できるようにする必要があります。私は以前PHPのunlink関数を使用していましたが、これはかなりリスクがあり、セキュリティ上の問題である可能性があると言われています。 (前のコード:PHP - サーバー上の別のフォルダにファイルを移動する

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

代わりに、ファイルを別のフォルダに移動するだけです。これは、最初にファイルをアップロードしてからアカウントにログインすると、長い時間がかかることがあります。

user/ 

、その後、その不要な画像を入れて目的地であるデルと呼ばれるフォルダの中にあること:

user/del/ 

があります私は、ユーザーのイメージ(複数可)を格納するメインフォルダを持っている場合ファイルを別のフォルダに移動するコマンドですか?だから言う:へ

user/image1.jpg 

移動/ rename()機能を使用し

user/del/image1.jpg 

答えて

284

rename機能は、この

docs rename

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

あなたが同じ場所に既存のファイルを保持したい場合は、copy

docs copy

0を使用する必要がありません

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

これは、ほぼrenameと同じですが、あなたが、move_uploaded_fileを使用アップロードされたファイルを移動したい場合は、この関数はまた、与えられたファイルがPOST経由でアップロードされたファイルであることを確認し、これがあること、たとえば防止ローカルファイルは、ドキュメント

0から

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を移動させます

+2

とても簡単!ありがとう:) –

62

になります。

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)); 
関連する問題