1

私は現在、ビルドしているサイト用のファイル アップローダーを構築していますが、ファイルの種類に問題があります。html、css、javascript、json ファイルをアップロードできるようにする必要がありますが、PHP などはアップロードできません。ファイルの種類の名前を見つけます。詳細については、以下を参照してください。

<?php
 if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
{
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("upload/" . $_FILES["file"]["name"]))
  {
  echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
  move_uploaded_file($_FILES["file"]["tmp_name"],
  "upload/" . $_FILES["file"]["name"]);
  echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
  }
   }
  }
  else
  {
  echo "Invalid file";
  }
?>

image/jpeg がある場合、.html と html を試してみましたが、.js などと同様に役に立ちませんでした。ヘルプ!!!:D

4

3 に答える 3

3

あなたが言及している場合:

echo "Type: " . $_FILES["file"]["type"] . "<br />";

これが MIME タイプです。ファイル拡張子を調べたい場合は、ファイル名自体を解析する必要があります。例えば:

$ext = substr(strrchr($_FILES["file"]["name"], '.'), 1);

許可/禁止するには、スイッチを使用することをお勧めします。

switch ($_FILES["file"]["type"]) {
    case 'image/jpeg':
    case 'image/gif':
        // Allowed
    break;
    default:
        // Not allowed
    break;
}


switch ($ext) {
    case 'jpeg':
    case 'gif':
    case 'jpg':
        // Allowed
    break;
    default:
        // Not allowed
    break;
}
于 2012-06-26T09:23:14.827 に答える
0

別のアプローチを提案できますか?

ファイルの種類に頼るのではなく、拡張子を調べてください。

これの小さな例は次のとおりです。

$parts = array();
$parts = explode( ".", $_FILES['file']['name'] );

if ( !empty($parts) && is_array($parts) ) {
    $extension = end( $parts );
} else {
    echo "File name has no extension";
}

if ( $extension == "jpg" || $extension == "jpeg" ) {
    // Do something with the jpeg
} elseif ( $extension == "html" ) {
    // Do something with html
} elseif ( $extension == "js" ) {
    // Do something with js
} else if ( ... /* You can add any conditional based on extension here */ ) {
    // And do whatever you want here
}

これは、複数の if / elseif ステートメントを使用した基本的な大雑把な例です。スイッチ条件を作成したり、ファクトリ クラスを作成したりできます。ただし、考え方は変わりません。

乾杯。

于 2012-06-26T09:27:56.843 に答える