我在php上传图片。它在firefox上运行正常。但在IE8验证中它显示的图像类型是'image / pjpeg'。因此,由于jpeg文件的验证,它无法上传图像。我的代码是
$imagetype=$_FILES['imageThumb']['type'];
if ($imagetype!="image/gif" && $imagetype!="image/jpg" && $imagetype!="image/jpeg" && $imagetype!="image/png" ){
$msg.="• supported format for Thumbnail Image is gif,jpg,jpeg and png.<br>";
}
任何帮助都会受到欢迎
由于
答案 0 :(得分:1)
为什么不修改验证码以接受pjpeg?像这样:
$imagetype=$_FILES['imageThumb']['type'];
if ($imagetype!="image/gif" && $imagetype!="image/pjpeg" && $imagetype!="image/jpg" && $imagetype!="image/jpeg" && $imagetype!="image/png" ){
$msg.="• 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发布的类似,建议的替代方案是尝试在其上实际执行与图像相关的功能。如果失败,“对不起客户,而不是图像”!