在IE8中上传图像时出现问题

时间:2011-02-21 09:47:38

标签: php file-upload

我在php上传图片。它在firefox上运行正常。但在IE8验证中它显示的图像类型是'image / pjpeg'。因此,由于jpeg文件的验证,它无法上传图像。我的代码是

$imagetype=$_FILES['imageThumb']['type'];

    if ($imagetype!="image/gif" && $imagetype!="image/jpg" &&  $imagetype!="image/jpeg" && $imagetype!="image/png" ){
    $msg.="&bull; supported format for Thumbnail Image is gif,jpg,jpeg and png.<br>";
    }

任何帮助都会受到欢迎

由于

3 个答案:

答案 0 :(得分:1)

为什么不修改验证码以接受pjpeg?像这样:

$imagetype=$_FILES['imageThumb']['type'];
if ($imagetype!="image/gif" && $imagetype!="image/pjpeg" && $imagetype!="image/jpg" &&  $imagetype!="image/jpeg" && $imagetype!="image/png" ){
    $msg.="&bull; supported format for Thumbnail Image is gif,jpg,jpeg and png.<br>";
}

答案 1 :(得分:1)

请勿根据浏览器首先发送的内容进行类型检测。

改为使用getimagesize()

答案 2 :(得分:0)

不同的浏览器在文件上传方面表现不同。例如,我实现了一个AJAX-y(iframe)文件上载,而chrome甚至没有发送mime类型。

除此之外,mime类型也不安全。检查(在我看来)更好的方法是“找出”MIME类型的服务器端。这样,您就不会依赖客户对其上传内容的诚实态度。

由于在检查mime类型时已经发生了上传,因此它不应该真正增加很多开销。

对于PHP,有一个名为finfo_file()的函数,它返回MIME类型。

修改
检查评论@ PHP手册后,似乎finfo_file - 实现也不是坚如磐石的。我的PHP经验非常微薄,很抱歉。

与Pekka发布的类似,建议的替代方案是尝试在其上实际执行与图像相关的功能。如果失败,“对不起客户,而不是图像”!