Internet Explorer文件上载失败mime-type检查

时间:2011-04-15 22:35:56

标签: php internet-explorer file-upload mime-types

我拼凑了一些来自各种互联网资源的脚本以使表单正常工作。我遇到了一个我无法解决的问题。我创建的表单允许用户在字段中提交数据,以及图像附件(验证:.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
   .... */
?>

如果您需要任何澄清,请告诉我。

1 个答案:

答案 0 :(得分:4)

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

  

Richard Davey富有来自corephp dot co dot 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

  

基思在2005年5月24日11:14   [...]我最好的选择是检查文件的扩展名并使用exif_imagetype()检查有效图像。许多人建议使用getimagesize(),如果文件确实是图像则返回数组,否则返回false,但exif_imagetype()要快得多。 (手册说明了)