2012-02-13 2 views
0

매우 흥미로운 문제가 있습니다. 아래에 작성한 스크립트는 작동하지만 Internet Explorer에서는 작동하지 않습니다. MAX_WIDTH 변수는 450으로 설정되며 이미지가 원래 크기 인 이미지는 업로드되지만 변환 계수가 무엇이든 상관없이 450은 업로드하지 않습니다. 어떤 제안? Chrome, Firefox 및 Safari에서 작동하고 크기가 조정됩니다. 또한 IE 8 버전은 64 비트 버전입니다. 감사.PHP 이미지 크기 조정이 Internet Explorer에서 조정되지 않음

private function checkForResize() { 
    $fileTypeArray = array('image/gif', 'image/jpeg', 'image/png'); 
    $origType = $this->_uploadType; 
    if (in_array($origType, $fileTypeArray)) { 
     $origImage = $_FILES[$this->_uploadInputField]['tmp_name']; 
     $imageWidth = getimagesize($origImage); 
     if ($imageWidth[0] > MAX_WIDTH) { 
      // Resize here 
      if ($origType == 'image/gif') { 
       $imageSrc = imagecreatefromgif($origImage); 
      } else if ($origType == 'image/jpeg') { 
       $imageSrc = imagecreatefromjpeg($origImage); 
      } else if ($origType == 'image/png') { 
       $imageSrc = imagecreatefrompng($origImage); 
      } else { 
       return false; 
      } 
      $width = $imageWidth[0]; 
      $height = $imageWidth[1]; 
      $newHeight = ($height/$width) * MAX_WIDTH; 
      $tmpImage = imagecreatetruecolor(MAX_WIDTH, $newHeight); 
      $this->setTransparency($tmpImage, $imageSrc); 
      imagecopyresampled($tmpImage, $imageSrc, 0, 0, 0, 0, MAX_WIDTH, $newHeight, $width, $height); 
      imagejpeg($tmpImage, UPLOAD_DIR.DS.$this->_uploadSafeName, 100); 
      imagedestroy($imageSrc); 
      imagedestroy($tmpImage); 
      return true; 
     } 
    } 
    return false; 
} 
+1

PHP가 서버 측을 실행하면 브라우저가 무엇인지 알 수 없습니다. –

+0

여기서 약간 디버그해야합니다. 이미지 * 크기가 조정되지 않고 있습니까? 어쩌면 브라우저에 표시되는 방식에 문제가있을 수 있습니다. 디버깅 문을 넣어서 모든 코드가 예상대로 실행되는지 확인하십시오. 이미지가 업로드되고'imagecreatefrom *'에 의해 올바르게 읽혀 진다면, 브라우저에 따라 차이가 없어야합니다. – deceze

+0

하지만 그건 사실을 참조하십시오. 나는 크롬에서 같은 이미지를 업로드 할 수 있습니다. 즉, 동일한 이미지를 업로드 할 수는 있지만, 즉 450에서 450으로 크기가 조정됩니다. 나는 파일 자체와 브라우저를 직접보고있다. –

답변

3

대답에 내 의견을 변환 : 그것은 클라이언트 측에서의로

브라우저는 서버 측 스크립트가 잘못된 것과는 아무 상관이 없습니다.

하지만 잘못 될 수있는 것은 MIME 형식을 감지하고 보내는 브라우저에서 MIME 형식이 신뢰할 수 없다는 사실입니다.

jpg 또는 png를 처리 할 때 IE는 image/pjpeg 또는 image/x-png MIME 유형을 전송하기 때문에 유효성을 검사 할 때도 확인해야합니다.