PHP-函数内部上载文件错误

时间:2019-05-25 10:41:52

标签: php file

您好,Stackoverflow的用户们!我有一个我真的不理解的问题。

我制作了一个简单的脚本,用于处理一些上传的附件。


它将遍历所有上传的图像,并调用saveThumbnail()函数以保存图像。

代码:

if(count($_FILES['image']['name']) > 0) {
    for($i=0; $i<count($_FILES['image']['name']; $i++){
        $targetPath =  "../../resources/img/posts/";
        $pendingId = uniqid();
        $targetName = $i . $pendingId . ".jpg";

        saveThumbnail($i, $targetPath, $targetName);
    }
}

功能

function saveThumbnail($i, $targetPath, $targetName){

    $imgName=$_FILES['image']['name'][$i];
    $imgLoc=$_FILES['image']['tmp_name'][$i];

    if ($imgName == NULL || $imgLoc == NULL){
        exit(CustomFunctions::ErrorWithCode("001"));
    }

    $path_parts = pathinfo($imgName);
    $ext = $path_parts['extension'];
    if ($ext != "png" && $ext != "jpg" && $ext != "gif" && $ext != "jpeg"){
        exit(CustomFunctions::ErrorWithCode("002"));
    }

    if (($img_info = getimagesize($imgLoc)) === FALSE)
      exit(CustomFunctions::ErrorWithCode("003"));

    switch ($img_info[2]) {
      case IMAGETYPE_GIF  : $src = imagecreatefromgif($imgLoc);  break;
      case IMAGETYPE_JPEG : $src = imagecreatefromjpeg($imgLoc); break;
      case IMAGETYPE_PNG  : $src = imagecreatefrompng($imgLoc);  break;
      default : exit(CustomFunctions::ErrorWithCode("004"));
    }



    // Fix Rotation
    $exif = exif_read_data($imgLoc);
    if (!empty($exif['Orientation'])) {
      switch ($exif['Orientation']) {
          case 3:
              $src = imagerotate($src, -180, 0);
              break;
          case 6:
              $src = imagerotate($src, 90, 0);
              break;
          case 8:
              $src = imagerotate($src, -90, 0);
              break;
      } 
    }



    $ratio = $img_info[0]/$img_info[1]; // width/height

    if( $ratio > 1) {
        $width = 500;
        $height = 500/$ratio;
    }
    else {
        $width = 500*$ratio;
        $height = 500;
    }



    $imgLocJPG = imagecreatetruecolor($width,$height);
    imagecopyresampled($imgLocJPG,$src,0,0,0,0,$width,$height,$img_info[0],$img_info[1]);
    imagedestroy($src);
    if(!imagejpeg($imgLocJPG, $targetPath . $targetName, 100)){
       exit(CustomFunctions::ErrorWithCode("005"));
    }

    // Destroy images
    imagedestroy($imgLocJPG);
    imagedestroy($imgLoc);



}

*如果一切正常,如果**我将函数的内容代替了saveThumbnail("image", $i, $targetPath, $targetName)行。

否则,如果我使用该函数,它将失败并且代码返回"\n"

有人知道为什么吗?

0 个答案:

没有答案