我很难过。我创建了一个上传图像处理,适用于除Internet Explorer之外的所有浏览器。我没有检查IE7,但IE8似乎没有检查文件扩展名。我一直收到错误“你必须上传jpg,gif,bmp。”
/* image uploading */
$target_path = "img/";
$image = $_FILES['crebusimage'];
$image['name'] = mysql_real_escape_string($image['name']);
$target_path .= $crebustime."_".$image['name'];
$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/jpe", "image/jfif", "image/png");
$field = 'crebusimage';
if(strlen($image['name']) == 0){
$form->setError($field, "*please choose an image");
}elseif(!in_array($image['type'], $valid_types)){
$form->setError($field, "*You must upload a jpg, gif, or bmp");
}else{
$busimg = $crebustime."_".$image['name'];
move_uploaded_file($image['tmp_name'], $target_path);
}
<td><b>Business Logo<br />(100Kb or less 100x100px)</b></td>
<td><input type="file" name="crebusimage" value="1"></td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="100000" /></td>
<td><?php echo $form->error('crebusimage'); ?></tD>
如何让这件事在邪恶的IE中发挥作用......
答案 0 :(得分:4)
如果您正在上传jpeg,他们通常会在IE中使用mimetype image / pjpeg发送。
具体来说,我遇到过csv文件的这个问题。 Windows机器将根据您安装的用于打开csv文件的内容为您提供不同的mimetypes。 / endgripe;)
答案 1 :(得分:2)
通过执行以下命令查看您在$ _FILES数组中获得的内容:
echo '<pre>';
print_r($_FILES);
echo '</pre>';
并使用getimagesize来确定图像类型,因为可以像@Juddling正确指出的那样欺骗mime类型。
答案 2 :(得分:1)
您应该检查文件扩展名,而不是与图像一起发送的标题。也许IE不发送它们,因为它们可能是伪造的。