Обрезать несколько изображений по одному с помощью JCrop и сеанса в php

У меня есть скрипт обрезки изображения, который обрезает одно изображение за раз с помощью плагина Jquery Jcrop. теперь я хочу загрузить больше изображений и обрезать их одно за другим с помощью цикла for.

Как лучше всего это сделать?

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

РЕДАКТИРОВАТЬ:

Я отредактировал свой код ниже с помощью $max и count. и я думаю, что я делаю это неправильно. как я могу исправить это, когда я нажимаю кадрировать, он обрезает их друг за другом.

Это мой uploaded.php:

    <?php 
         session_start();
         $max = count($_FILES['userfile']['name']);
         for($i = 0; $i < $max; $i++){
            $target = $_FILES['file'][$i];
         }

         $target = "data/uploads/"; 
         $target = $target . basename( $_FILES['filename']['name']) ; 
         $_SESSION['target_path'] = $target;

         $ok=1; 
         if(move_uploaded_file($_FILES['filename']['tmp_name'], $target)) 
         {
             echo "De afbeelding *". basename( $_FILES['filename']['name']). "* is geupload naar de map 'uploads'";
         } 
         else 
         {
             echo "Sorry, er is een probleem met het uploaden van de afbeelding.";
         } 
    ?> 

Спасибо!


person Kees Sonnema    schedule 14.03.2013    source источник
comment
Я не уверен, что люди будут читать блоки кодов. Можете ли вы уточнить вопрос, выделив критические части процесса?   -  person Antony    schedule 14.03.2013
comment
людям нужен весь код, чтобы было понятно. я отредактировал его так, чтобы мой вопрос был вверху, а кодовые блоки внизу   -  person Kees Sonnema    schedule 14.03.2013
comment
Извините, но ваш код не относится к вашему вопросу. Зачем вы печатаете PHP-код, когда хотите делать вещи jQuery. Пожалуйста, будьте более конкретными!   -  person SteAp    schedule 23.03.2013


Ответы (2)


Вам нужно проверить несколько вещей

1) Чтобы загрузить файлы, прочитайте: http://php.net/manual/en/features.file-upload.multiple.php — конкретно input name="userfile[]" в HTML, а файлы на сервере отображаются как $_FILES['userfile']['name'][0],...,$_FILES['userfile']['name'][N]

2) move_uploaded_file() — это проверка безопасности, чтобы убедиться, что файлы действительны, не выходите из дома без него :-)

3) Я бы рекомендовал imagemagick библиотеку (http://php.net/manual/en/imagick.cropimage.php), я знаю, что демо-версия Jcrop использует библиотеку GD, но стоит потратить время на изучение imagemagick.

4) Наконец, если ничего не помогает, используйте print_r($variable), чтобы убедиться, что файлы попадают на ваш сервер.

5) Иногда это может быть проблема системного администратора, например, недоступная для записи папка /tmp, переполнение диска, ограничение размера загрузки в php.ini и встроенный тайм-аут веб-сервера. Проверка phpinfo() тоже помогает

person Alvin K.    schedule 21.03.2013
comment
Потрясающе попробую это. надеюсь, я могу исправить это сейчас. - person Kees Sonnema; 21.03.2013
comment
я не могу попробовать это сейчас. попробую через несколько часов. - person Kees Sonnema; 21.03.2013
comment
мне нужно лучшее решение. это не сработает, потому что я почти закончил. Мне просто нужен forloop, где плагин jcrop обрезает изображения сразу после каждого при нажатии на обрезку. - person Kees Sonnema; 21.03.2013
comment
При загрузке нескольких файлов это работает с ОДНИМ файлом? Попробуйте заставить его работать с одним файлом, а затем выясните, почему он не работает с ДВУМЯ файлами. - person Alvin K.; 22.03.2013
comment
сейчас не могу попробовать. сделаю завтра - person Kees Sonnema; 22.03.2013
comment
мне просто нужно посчитать файлы. а затем обрезать их 1 на 1. Таким образом, 5 в вашем коде должны быть чем-то вроде $max, а затем сначала я должен сделать что-то вроде? $max = count($_FILES['userfile']['name']; ? - person Kees Sonnema; 23.03.2013
comment
Я никогда не решал эту проблему, но теперь я намного лучше знаком с php и jquery, поэтому я мог бы исправить это сам, если бы мне было нужно. Просто хочу, чтобы вы знали, что я знаю, как это сделать прямо сейчас. - person Kees Sonnema; 08.08.2013

Я думаю, вы хотите что-то еще вроде этого:

<?php 
session_start();

$upload_dir = "data/uploads/"; 
for($i = 0; $i < 5; $i++){
     $target = $upload_dir . basename( $_FILES['file']['name'][$i]);
     if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $target)) {
         echo "De afbeelding *". basename( $_FILES['file']['name'][$i]). "* is geupload naar de map 'uploads'";
     } else {
         echo "Sorry, er is een probleem met het uploaden van de afbeelding.";
     }
}
person Rob Cozzens    schedule 18.03.2013
comment
попробовал это. но я получаю сообщение об ошибке «Извините, э-э-э-э-э-э-э-э-э… 5 раз». когда я загружаю 5 изображений. - person Kees Sonnema; 18.03.2013
comment
Это также помогло бы увидеть функцию обрезки. - person Rob Cozzens; 24.03.2013