1

重複の可能性:
PHP によるアップロードされたファイルの種類のチェック

アップロード中にファイルの種類を確認するために以下のスクリプトを使用して、ファイルのアップロードを jpg/jpeg、png のみに制限しました。しかし、IE では機能しません (mozilla で機能します)。

$destination_path = getcwd().DIRECTORY_SEPARATOR;

$target_path = $destination_path . basename( $_FILES['myfile']['name']);
$types=array('image/png','image/jpeg');

if (in_array($_FILES['myfile']['type'], $types))
{
if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {   
$result = 1;
}
}

else
{
$result = 0;
}
4

2 に答える 2

1

IEはjpgに異なるファイルタイプのヘッダーを設定するので、に追加image/pjpegします$types

$types=array('image/png','image/jpeg', 'image/pjpeg');
于 2012-12-08T10:46:07.993 に答える
1

グーグルで少し時間をとると、これはすべてのブラウザで完全に機能することがわかります

$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
$_FILES["file"]["name"]=$_FILES["file"]["name"];
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 50000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
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"]);

  $filename= "upload/" . $_FILES["file"]["name"];
  }
}
 }
else
{
echo "Invalid file";
}
于 2012-12-08T10:49:41.083 に答える