2011-08-02 5 views
0

오케이 이런 일이 당황 스러웠습니다. 내 스크립트는 Mozilla에서는 작동하지만 IE에서는 작동하지 않습니다. 나는 IE에서이 오류를 얻을 : Session.php에서PHP 오류는 인터넷 익스플로러에만 존재합니다

Warning: move_uploaded_file(uploads/properties/yh96gapdna8amyhhmgcniskcvk9p0u37/) [function.move-uploaded-file]: failed to open stream: Is a directory in /homepages/19/d375499187/htdocs/sitename/include/session.php on line 602 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpJkiaF3' to 'uploads/properties/yh96gapdna8amyhhmgcniskcvk9p0u37/' in /homepages/19/d375499187/htdocs/sitename/include/session.php on line 602 

내 코드는 다음과 같습니다

function addPhoto($subphotoSize,$subphotoType,$subphotoTmpname,$subphotoDesc,$subfieldID,$subsessionid){ 
    global $database, $form; 

    /* Get random string for directory name */ 
    $randNum = $this->generateRandStr(10); 

    $maxFileSize = 2500000; // bytes (2 MB) 
    $filerootpath = PHOTOS_DIR.$subsessionid."/"; 
    if($subphotoType == "image/png"){ 
     $filename = $randNum.".png"; 
    } else if ($subphotoType == "image/jpeg"){ 
     $filename = $randNum.".jpg"; 
    } 
    $fullURL = $filerootpath.$filename; 

    /* Image error checking */ 
    $field = "photo"; 
    if(!$subphotoTmpname){ 
     $form->setError($field, "* No file selected"); 
    } else { 
     if($subphotoSize > $maxFileSize) { 
      $form->setError($field, "* Your photo is above the maximum of ".$maxFileSize."Kb"); 
     } else if (!is_dir($filerootpath)){ 
      mkdir($filerootpath,0777); 
      chmod($filerootpath,0777); 
     } 
     move_uploaded_file($subphotoTmpname, "$fullURL"); 
    } 
    /* Errors exist, have user correct them */ 
    if($form->num_errors > 0){ 
     return 1; //Errors with form 
    } else { 
     if($subfieldID == "1"){ // If the first field... 
      $is_main_photo = 1; 
     } else { 
      $is_main_photo = 0; 
     } 
     if(!$database->addNewPhoto($ownerID,$subphotoDesc,$fullURL,$userSession,$is_main_photo, $subsessionid)){ 
      return 2; // Failed to add to database 
     } 
    } 
    return 0; // Success 
} 

그것은 폴더에게 문제를 생성 없지만 다른 작업을 수행 나던.

+0

'$ fullURL'을 출력하고 출력물을 보여줄 수 있습니까? – PeeHaa

+0

이 함수에 무엇을 전달합니까? 두 브라우저가 서로 다른지 확인하십시오. 예를 들어,'$ _FILES'의 파일 이름을 전달한다면, IE와 Firefox 모두에 대해'var_dump ($ _ FILES);'와 같은 것을 시도해보십시오. –

+0

var_dump는 다음을 표시합니다 : array [1 "photo"] => array (5) {[ "name"] => 문자열 (8) "6122.jpg"[ "type"] => 문자열 (11) "image/pjpeg "["tmp_name "] => 문자열 (14)"/ tmp/phpu8oMmx "["error "] => int (0) ["size "] => int (493526) – user29660

답변

1

$ subphotoType의 값을 보려면 로그 메시지를 추가하십시오. 내 생각 엔 Internet Explorer에서 파일을 업로드 할 때 image/png도 image/jpeg도 아니므로 else 절이 없으므로 $ filename은 비어 있습니다.

if($subphotoType == "image/png"){ 
    $filename = $randNum.".png"; 
} else if ($subphotoType == "image/jpeg"){ 
    $filename = $randNum.".jpg"; 
} else { 
    // No else! $filename will be empty. 
} 

오류보고 설정을 올바르게 조정하면 정의되지 않은 변수를 사용하려고한다는 메시지가 표시됩니다.

+0

나는 그 didnt 일을 아프다. 다른 파일 형식을 방지하기 위해 양식에 javascript가 있습니다. 고마워요. – user29660

+0

클라이언트 측에서는 아마도 파일 확장자를 검사하고 있습니다. 서버에서는 파일 내용 유형을 검사하고 있습니다. 이것은 다른 점입니다. 확인하고 보자 - die와 함께 else 절을 ​​추가한다 ("Handled Content-Type : $ subphotoType"); – sagi

+0

당신은 실제로 맞았지 만 if 조건에 관계없이 내가 업로드했기 때문에 else 조건은 작동하지 않았습니다. 감사 – user29660

관련 문제