2011-08-02 130 views
0

好吧,这让我感到困惑。我的脚本在Mozilla中运行,但不是IE。我得到了IE此错误:仅在Internet Explorer中出现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 

我在session.php文件的代码是:

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'的文件名,请尝试类似'var_dump($ _ FILES);'的方式查看IE和Firefox是否有区别。 –

+0

var_dump displays:array(1){[“photo”] => array(5){[“name”] => string(8)“6122.jpg”[“type”] => string(11)“image/pjpeg“[”tmp_name“] => string(14)”/ tmp/phpu8oMmx“[”error“] => int(0)[”size“] => int(493526) – user29660

回答

1

添加日志消息以查看$ subphotoType的值。我的猜测是,当你从Internet Explorer上传文件时,它既不是image/png也不是image/jpeg,在这种情况下,$ filename将是空的,因为你没有else子句。

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

如果您正确调整错误报告设置,您应该看到一条通知,说您正在尝试使用未定义的变量。

+0

我无所畏惧,没有工作。我在表单中使用了JavaScript来防止其他文件类型。无论如何感谢 – user29660

+0

在客户端,您可能正在检查文件扩展名,并在服务器上检查文件内容类型,这是另一回事。检查并查看 - 添加一个else子句(“Got handled Content-Type:$ subphotoType”); – sagi

+0

你其实是对的,但其他条件没有工作,因为我正在上传,不管那些if语句。谢谢 – user29660

相关问题