2012-04-28 9 views
1

イメージをサーバーにアップロードするときにイメージの名前を変更しようとしています。一般的にこれを行う簡単な方法はありますか?以下は私が使用しているPHPコードです。私はHTMLフォームから隠しフィールドとして渡している変数として名前を変更したい。PHP画像のアップローダの名前を変更しますか?

//variable from hidden field on form which is from mysql database 
$imageName = $_POST['image_rename']; 

if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 8000000)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

    if (file_exists("../uploads/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], "../uploads/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "../uploads/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
+0

彼は、ファイル名を提供すると言ったので、拡張子がハズレ – ilanco

答えて

1

move_uploaded_file()機能を変更してみてください。関数内で必要な名前を追加します。ただ、適切な拡張子をつかむようにしてください、何かのように:

$parts=explode('.',$_FILES['file']['name']); 
$newName=$imageName.'.'.$parts[(count($parts)-1)]; 
move_uploaded_file($_FILES['file']['tmp_name'],'../uploads/'.$newName); 
+1

end($ parts);を使用できます。 count - 1の代わりに – Sedz

0

変更

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

move_uploaded_file($_FILES["file"]["tmp_name"], "../uploads/" . $imageName); 
+0

潜在的に危険なことができ、クライアントからの未チェックの入力を使用していません隠された入力を介して。 '$ imageName = $ _POST ['image_rename'];';) – Sedz

+0

を使用していない – fhugas

関連する問題