文件上传无法在IE中运行,但适用于FF,Chrome和Safari

时间:2009-08-27 19:01:50

标签: php

我很难过。我创建了一个上传图像处理,适用于除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中发挥作用......

3 个答案:

答案 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不发送它们,因为它们可能是伪造的。