我拼凑了一些来自各种互联网资源的脚本以使表单正常工作。我遇到了一个我无法解决的问题。我创建的表单允许用户在字段中提交数据,以及图像附件(验证:.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
.... */
?>
如果您需要任何澄清,请告诉我。
答案 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()要快得多。 (手册说明了)