2016-09-12 5 views
0

私は最近、PHPで画像ギャラリーのアップローダを構築する方法を学んでいます。アップロードフォルダにアップロードする前に実際にファイルの名前を変更する方法がわかりません。誰も私を助けることができますか?PHP - ファイルの名前を変更してアップロードする場合はファイルをアップロードします。

私は今まで何を持っていたのですか?私は私のディレクトリを「アップロード」に移動するためにmove_uploaded_file()関数を使用してファイルの名前を変更したい場所私のwhileループがあるので、右後

if(isset($_POST['submit'])) { 
$allowedExts = array("gif", "jpeg", "jpg", "png","GIF","JPEG","JPG","PNG"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& in_array($extension, $allowedExts)) { 

    if ($_FILES["file"]["error"] > 0) { 
    echo "Invalid File Type"; 
    } else { 

    $target = "../upload/"; 
    $name = addslashes($_FILES['file']["name"]); 

    if(file_exists('../upload/' . $name)) { 
     $explode = explode('.', $name); 
     $img = $explode[0]; 
     $ex = $explode[1]; 
     $i = 1; 
     $new = $img . '_' . $i . '.' . $ex; 

     while (file_exists('../upload/' . $new)) { 
      $i++; 
      $new = $img . '_' . $i . '.' . $ex; 
     } 

     // RENAME FILE HERE? 

    } 
     move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); 
} 

} else { 
    echo "Error uploading image"; 
    die(); 
} 

} 

。私はこれを達成するための最良の方法は何ですか?あなたは、単に2番目のパラメータとして新しいファイルにその名前を付けることができmove_file_uploadを呼び出すと

おかげで

答えて

2

、私はドキュメントが、これは明確にしていない理解が、それは動作します。

move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); 

だから、

move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"] . "Some random string to be added to the filename"); 

ような何かをするだろうかあなたはすべて一緒に以前のファイル名を無視したい場合はちょうどあなたの二番目のパラメータから削除します。

+0

今や意味があります!これを答えとしてマークします。ご協力いただきありがとうございます! :) – ShiggyDooDah

+1

上記のように、ファイルの名前を変更してもドキュメントはあまり明確ではありませんが、それはその達成方法です –

1

どうしてそんなことはしませんか?

移動中に名前を変更することができます。 move_uploaded_file()の2番目のパラメータとして新しいファイル名を指定するだけです。

move_uploaded_file($_FILES["file"]["tmp_name"], $target . $new); 
関連する問題