0

私は自分の WebDev クラスから取得した単純なファイル アップロードの演習に取り組んでいました。実際には、コードをコピーして、ニーズに合わせて統合するだけで済みました。私は自分のプロジェクトでそうしようとしましたが、残念ながら同じエラーが引き続き発生します。

<?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>
4

3 に答える 3

0

最初に常に$_FILES配列をエコーし​​てから、デバッグを開始する必要があるため、これを使用できます。この行をから変更します

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

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

次の行を変更します

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

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

行を削除します

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

この行を変更します

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

if(!in_array($_FILES['usrfile']['type'],$allowed_filetypes))
于 2012-05-01T05:22:40.537 に答える
0

'tmp_name'インデックスには、ファイルが実際に持っていた名前ではなく、一時ファイル名が含まれています。に格納されてい'name'ます。情報については、このページを参照してください。

さらに、次のことを行う必要があります。

  1. 'error'インデックスのエラーをチェックします。
  2. pathinfo拡張子を取得するために使用し、
  3. 配列を検索する前に小文字にします。
  4. 既存のファイルを上書きしないように、アップロードされたファイル名にランダム性を追加します。
于 2012-05-01T05:11:33.220 に答える
0

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

于 2012-05-01T05:16:51.957 に答える