2016-04-28 16 views
0

私のウェブサイトでは、ユーザーが自分の写真をアップロードできるようにPHP画像ファイルアップロードシステムを持っています。これらの画像は/images/に保存されており、ファイルのアクセス権を777に変更しました。私は実際に前にrenameを見ていないが、ちょうどそれをしようと、私はそれが動作doesnのだ認めるよPHPファイルアップロード専用拡張子

<?php 
$name= 'filename'; 
$newname= '/images/'. $name. '.jpg'; 
if(isset($_FILES['image'])){ 
    $errors= array(); 
    $file_name = $_FILES['image']['name']; 
    $file_size =$_FILES['image']['size']; 
    $file_tmp =$_FILES['image']['tmp_name']; 
    $file_type=$_FILES['image']['type']; 
    $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); 

    $expensions= array("jpeg","jpg","png");   
    if(in_array($file_ext,$expensions)=== false){ 
     $errors[]="extension not allowed, please choose a JPEG or PNG file."; 
    } 
    /*if($file_size > 2097152){ 
    $errors[]='File size must be excately 2 MB'; 
    }*/    
    if(empty($errors)==true){ 
     rename($file_tmp, $newname); 
     echo "Success"; 
    }else{ 
     print_r($errors); 
    } 
} 
?> 

<form action="" method="POST" enctype="multipart/form-data"> 
<input type="file" name="image" /> 
<input type="submit"/> 
</form>` 
+0

「rename()」http://php.net/manual/en/function.rename.phpのマニュアルを読み、** User Contributed Notes **の最初の例を見てください。 –

+5

あなたは['ftp'](http://stackoverflow.com/questions/tagged/ftp)とタグ付けされていますが、ここでの関連性は見当たりません。 –

答えて

0

:私は、アップロードファイルをテストするとき、それは動作しますが、ファイルは.jpg拡張子ではなくプレフィックスを保持します私はかなり期待しているようだ。代わりにmove_uploaded_fileを試してください。

あなたが受け入れた唯一の画像フォーマットがpngjpegであることを確認していましたが、すべてをjpgに変更しています。どうして?すべての画像視聴者がpngjpgエクステンションを開くわけではありません。

<?php 
$name= 'filename'; 
$newname= '/images/'. $name;//. '.jpg'; // why wouldn't you preserve the correct extension? i.e. $file_ext 
if(isset($_FILES['image'])){ 
    $errors= array(); 
    $file_name = $_FILES['image']['name']; 
    $file_size =$_FILES['image']['size']; 
    $file_tmp =$_FILES['image']['tmp_name']; 
    $file_type=$_FILES['image']['type']; 
    $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); 

    $expensions= array("jpeg","jpg","png");   
    if(in_array($file_ext,$expensions)=== false){ 
     $errors[]="extension not allowed, please choose a JPEG or PNG file."; 
    } 
    /*if($file_size > 2097152){ 
    $errors[]='File size must be excately 2 MB'; 
    }*/    
    if(empty($errors)==true){ 
     // // // use move_uploaded_file() instead // // // 
     //rename($file_tmp, $newname); 
     move_uploaded_file($file_tmp, "$newname.$file_ext"); 
     echo "Success"; 
    }else{ 
     print_r($errors); 
    } 
} 
?> 

<form action="" method="POST" enctype="multipart/form-data"> 
<input type="file" name="image" /> 
<input type="submit"/> 
</form> 
+0

はい、それでも問題は解決しません:ファイル名は拡張子( '.jpg'か' .png')を保持しています – Felix

+0

うーん、 '$ name'を割り当てる方法に問題があるはずですこのスクリプトはそのまま動作するためです。 –