2012-05-01 14 views
0

私はWebDevクラスから得た単純なファイルアップロード練習に取り組んでいました。私たちは実際にコードをコピーして、私たちのニーズに合わせて統合するだけでした。 私は自分のプロジェクトでこれをやろうとしましたが、悲しいことに、同じエラーが繰り返されます。PHP - File Upload spitting outエラー

<?php 

$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); 
$max_filesize = 524288; 
$upload_path = 'uploads/'; 

$filename = $_FILES['userfile']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
var_export($_FILES, $ext); 

if(!in_array($ext,$allowed_filetypes)) 
    die('The file you attempted to upload is not allowed.'); 


if(filesize($_FILES['usrfile']['tmp_name']) > $max_filesize) 
    die('The file you attempted to upload is too large.'); 


if(!is_writable($upload_path)) 
    die('You cannot upload to the specified directory, please CHMOD it to 777.'); 


if(move_uploaded_file($_FILES['usrfile']['tmp_name'],$upload_path . $filename)) 
    echo 'Your file upload was successful, view the file <a href="' . $upload_path . $filename . '" title="Your File">here</a>'; 
    else 
    echo 'There was an error during the file upload. Please try again.'; 

?> 

配列に定義されているすべての型を持つ「間違ったファイルタイプ」エラーが表示され続けます。

<form id='upload' action="uploadfile.php" method="POST" enctype="multipart/form-data"> 
    <table> 
     <tr> 
      <td >Choose a File to Upload</td> 
     </tr> 
     <tr> 
      <td >Select File</td> 
      <td ><input type="file" name="userfile"></td> 
     </tr> 
     <tr> 
      <td colspan=2 id="sub"><input type="submit" name="submit" value="submit" ></td> 
     </tr> 
    </Table> 
</form> 
+0

は、ファイルタイプが最初であるもののエコーを行います。 – Jake

答えて

0

'tmp_name'指数は、一時ファイル名ではなく、ファイルが実際に持っていたものを含んでいます。それは'name'に保存されています。詳細は、this pageを参照してください。

また、あなたべき:'error'インデックス内のエラーのため

  1. チェック。
  2. 使用pathinfo
  3. 小文字、それを配列を検索する前に、拡張子を取得するには、
  4. は、既存のファイルを上書きしないようにアップロードされたファイル名にいくつかのランダム性を追加します。
+0

悲しいことに、それを 'name'に変更しても、ファイルが許可されていないというエラーを出すことはできません==>最初にエコーを見る場合 –

+0

次に、 'var_export($ _ FILES、$ ext);'あなたの質問(とあなたが今使っている更新されたコードだけでなく)の最初のifとpostの直前。 – DCoder

+0

このようにして、コードを更新する必要があります。まだ同じエラー。 –

0

$ filename = $ _FILES ['usrfile'] ['名前'];

0

まず、$ _FILES配列をエコーし​​てからデバッグを開始する必要があります。

$allowed_filetypes = array('jpg','gif','bmp','png', 'jpeg'); 

変化follwing線

if(filesize($_FILES['usrfile']['tmp_name']) > $max_filesize) 

if(filesize($_FILES['usrfile']['size']) > $max_filesize) 

までに

$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); 

から、この行を変更して行を削除

$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 

if(!in_array($_FILES['usrfile']['type'],$allowed_filetypes)) 
にこのライン

if(!in_array($ext,$allowed_filetypes)) 

を変更