图片上传在IE中无效?但在其他浏览器中它很好

时间:2011-09-26 15:09:44

标签: php internet-explorer image-processing

所以我正面临这个问题,这是我在4年多的发展过程中从未有过的问题,

HTML代码

<fieldset id="step_3" style="display:none;">
  <legend>3. Add Photos</legend>
  <ol>
    <li>
      <label for="main_image">Main Image..</label>
      <input type="file" name="extra_img0" size="35"/>
    </li>
    <li>
      <label for="extra_img1">Extra Images</label>
      <input type="file" name="extra_img1" size="35"/>
    </li>
    <li>
      <label for="extra_img2"> </label>
      <input type="file" name="extra_img2" size="35" />
    </li>
    <li>
      <label for="extra_img3"> </label>
      <input type="file" name="extra_img3" size="35"/>
    </li>
    <li>
    <input type="submit" name="add" value="Add Listing"/>
    </li>
  </ol>
</fieldset>

PHP代码......

$i = 0;
    while($i < 4) {
        if(!empty($_FILES['extra_img'.$i]['name'])) {
            if($_FILES['extra_img'.$i]['type'] == "image/gif" OR $_FILES['extra_img'.$i]['type'] == "image/png" OR $_FILES['extra_img'.$i]['type'] == "image/jpeg") {
                $img = md5(microtime()).'.jpg';
                $image = New SimpleImage();
                $image->load($_FILES['extra_img'.$i][tmp_name]);
                if($image->getWidth() < $image->getHeight()) {
                    $image->resizeToWidth("300");
                    $image->cutHeight("300");
                } else {
                    $image->resizeToHeight("300");
                    $image->cutWidth("300");
                }
                $image->save('uploads/listings/large/'.$img);
                $db->query("INSERT INTO `images_to_listing` (`listing_id` ,`name`) VALUES ('{$listing_id}', '{$img}');");
            }
        }
    $i++;
    }

代码在IE以外的所有浏览器中都运行良好吗?它甚至没有插入MYSQl,任何想法?

1 个答案:

答案 0 :(得分:0)

看看是否有效:

// List of allowable file extensions
$allowedExtensions = array (
  'jpg',
  'jpeg',
  'gif',
  'png'
);

for ($i = 0; $i < 4; $i++) {
  // Loop 0-3
  if (!empty($_FILES["extra_img$i"]['name']) && in_array(strtolower(pathinfo($_FILES["extra_img$i"]['name'],PATHINFO_EXTENSION),$allowedExtensions))) {
    // If you get here, the image is set and has a file extension specified as allowable above
    $img = md5(microtime()).'.jpg';
    $image = New SimpleImage();
    $image->load($_FILES["extra_img$i"]['tmp_name']);
    if ($image->getWidth() < $image->getHeight()) {
      $image->resizeToWidth("300");
      $image->cutHeight("300");
    } else {
      $image->resizeToHeight("300");
      $image->cutWidth("300");
    }
    $image->save("uploads/listings/large/$img");
    $db->query("INSERT INTO `images_to_listing` (`listing_id` ,`name`) VALUES ('{$listing_id}', '{$img}');");          
  } else {
    // You may want to add error handling here
  }
}

关键区别在于使用文件的扩展名,而不是它的MIME类型(依赖于浏​​览器是合理的)。