PHP - загруженный файл внутри функции Ошибка - PullRequest
1 голос
/ 25 мая 2019

Здравствуйте, пользователи 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".

Кто-то знает почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...