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 回答