Генерация миниатюр из файловых загрузок в PHP - PullRequest
0 голосов
/ 01 сентября 2018

Более двух дней я безуспешно пытаюсь сгенерировать миниатюры из файловых загрузок. Мои коды следующие:

HTML

<form class="navbar-form pull-left"  action="fileupload.php" name="fileupload" method="post" enctype="multipart/form-data">
        <label for="file" style="cursor: pointer;padding:5px 0 0 0;font-weight:normal" title="Add Images">IMAGES</label>
        <input type="file" name="file[]" multiple id="file"><br>
      </form>

PHP

session_start();
$database = $_SESSION['folder'];
$match = $_SESSION['matchLst'];
$tardir = "/var/www/html/projects/" . $database . "/" . $match . "/";
$thumb = $match . "_thumb/";
#$thumbdir = $tardir . $thumb;
$thumbdir = "/var/www/html/projects/images/Match1/Match1_thumb/";


function generateThumbnail($img, $width, $height, $quality = 90)
{
    if (is_file($img)) {
        $imagick = new Imagick(realpath($img));
        $imagick->setImageFormat('jpeg');
        $imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
        $imagick->setImageCompressionQuality($quality);
        $imagick->thumbnailImage($width, $height, false, false);
        $filename_no_ext = basename($img);
        if (file_put_contents($filename_no_ext, $imagick) === false) {
            throw new Exception("Could not put contents.");
        }
        return true;
    }
    else {
        throw new Exception("No valid image provided with {$img}.");
    }
}


if(!isset($_FILES['file'])){die();}

if(isset($_FILES['file'])) {
    if($_FILES['file']['name']) {
        $filename = $_FILES['file']['name'];
        $source = $_FILES['file']['tmp_name'];
        $target = $tardir . $filename;
        $thumb = $thumbdir;
        move_uploaded_file(generateThumbnail($source, 100,100,65), $thumb);
    }
}

Приведенный выше php-код возвращает следующую ошибку:

HP Fatal error:  Uncaught exception 'Exception' with message 'Could not put contents.' in /var/www/html/fileupload.php:23\nStack trace:\n#0 /var/www/html/fileupload.php(41): generateThumbnail('/tmp/phpdFkrX4', 100, 100, 65)\n#1 {main}\n  thrown in /var/www/html/fileupload.php on line 23, referer: http://localhost/index.php

В то время как когда я жестко кодирую путь к изображению, указанный в этом примере : он работает.

Точно так же, когда я просто хочу загрузить выбранные изображения и изменить

move_uploaded_file(generateThumbnail($source, 100,100,65), $thumb);

до

move_uploaded_file($source, $thumb);

Тот же код отправляет изображения в нужную папку.

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