ie浏览器文件上传失败


Internet Explorer file upload fails mime-type check

我已经从各种互联网资源拼凑了一些脚本,以获得一个表单的工作。我遇到了一个解决不了的问题。我创建的表单允许用户在字段中提交他们的数据,外加一个图像附件(验证:. eps或. jpg格式)。

该脚本在Firefox和Safari中可以正常工作,但在Internet Explorer中不行。在IE中,无论您是否附加了正确类型的图像,它都会返回错误的文件类型。因此,由于某些原因,IE似乎没有像PHP要求的那样验证文件类型。

<?php
/* ....
   snip
   .... */
      $filetype=$_FILES["prosp_client_logo"]["type"];
/* ....
   snip
   .... */
      elseif($filetype=="application/postscript" or $filetype=="image/jpg" or $filetype=="image/jpeg") {
/* ....
   snip
   .... */
?>

http://www.php.net/manual/en/features.file-upload.php#75932

Richard Davey rich at corephp。co . uk 22-Jun-2007 12:05
[…你可能倾向于根据$_FILES数组中报告的mime类型来验证更新。但是要小心——它是由浏览器设置的,而不是由PHP或web服务器设置的,而且浏览器是不一致的(有什么新?!)

IE将为附件发送自己的mime-type(基于它的文件系统关联),这通常与您在代码中期望的不同。这些数据也可以被欺骗,所以最好不要相信浏览器对文件mime-type的描述。

http://www.php.net/manual/en/features.file-upload.php # 53133

keith at phpdiary dot org 24may 2005 11:14
[…我最好的办法是检查文件的扩展名,并使用exif_imagetype()来检查有效的图像。许多人建议使用getimagesize(),如果文件确实是图像,则返回一个数组,否则返回false,但是exif_imagetype()要快得多。(手册上是这么说的)