0

私の課題では、ユーザーが .gif ファイル拡張子をフォルダーにアップロードし、アップロード後に表示できるようにする必要があります。

フォームと処理ページを取得しましたが、それらを機能させることができないようです。ディレクトリのアクセス許可を rwxrwxrwx に設定してテストしました。

アップロード ファイル コード:

<html>
  <head>
<title>Assignment 7 Part II -- Art Gallery</title>
  </head>
  <body>
    <form method="post" action="a7a2.php" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="50000">
    Your file: <input type="file" name="uploadFile" /><br />
    <input type="submit" value="Upload it">
  </form>
</body>
</html>

コード:

<html>
      <head>
        <title>Assignment 7 Part II -- Art Gallery Results</title>
      </head>
      <body>

      <?php
      $uploadDir = 'images/';
      $uploadFileDir = $uploadDir . basename($_FILES['uploadFile']['name']);                                                   
      if(isset($_FILES['uploadFile'])) {
          if($_FILES['uploadFile']['error'] != UPLOAD_ERR_OK ||
          $_FILES['uploadFile']['mime'] != "image/gif") {
          print "<p>File not uploaded successfully!</p>";
          print "<p>Please make sure the file has the correct file extension: .gif</p>"; 
          print "<p><a href='a7p2.php'>Try uploading again</a>";
          var_dump($_FILES['uploadFile']['error']);
          die;
          } else {
          move_uploaded_file($_FILES['uploadFile']['name'], $uploadFileDir) or die("Can't move file to $uploadFileDir");   
          print "<p>Success!</p>";
          }
      }

      $uploadedFiles = glob("/students/ryan/php/images/*.gif");
      if($uploadedFiles != false) {
          print "<p>Here are pictures from the art gallery: </p>";
          foreach($uploadedFiles as $file) {
          $url = "http://hills.ccsf.edu/~ryan/images/" . substr($file, strrpos($file, '/') + 1);
          print "<p><img src=\"$url\"></p>";
          }
      } else {
          print "There are no pictures in the art gallery";
      }
      ?>

      </body>
    </html>

または同じコード、以下のコードへのリンク:

http://pastebin.com/JNxwy323

4

2 に答える 2

3

ブラウザがファイルの種類を示す MIME タイプに依存するのは安全ではありません。代わりに、ファイルが本来あるべきものであるかどうかを確認する必要があります。この場合:

if( !@imagecreatefromgif($_FILES['uploadFile']['tmp_name'])) {
    // file is not a valid GIF image
}
于 2012-10-21T23:26:53.527 に答える