2013-10-07 2 views
1

Я пытаюсь настроить многопользовательский загрузчик изображений, и всякий раз, когда я пытаюсь загрузить более 20 файлов, загружаются только первые 20 файлов.PHP - Множественная загрузка файлов застряла в 20 элементах

Прежде чем продолжить, id просто скажет, что max_file_uploads в php.ini настроен на 400, поэтому другие ответы на очень похожие вопросы, похоже, не разрешают мою проблему.

Мой полный код ниже, обратите внимание, что я знаю, что использую mysql_query, но это только для локальных целей тестирования.

-

PHP

if(isset($_POST['upload'])){ 
    include("SimpleImage.php"); 

    echo count($_FILES['file']['name']); 

    for($i=0; $i<count($_FILES['file']['name']); $i++) { 

     $allowedExts = array("gif", "jpeg", "jpg", "png", "JPG"); 
     $extension = end(explode(".", $_FILES["file"]["name"][$i])); 

     date_default_timezone_set('Europe/London'); 
     $date = date_create(); 

     if ((($_FILES["file"]["type"][$i] == "image/gif") 
     || ($_FILES["file"]["type"][$i] == "image/jpeg") 
     || ($_FILES["file"]["type"][$i] == "image/jpg") 
     || ($_FILES["file"]["type"][$i] == "image/png")) 
     && ($_FILES["file"]["size"][$i] < 10485760) 
     && in_array($extension, $allowedExts)){ 
      $name = date_timestamp_get($date) . "_" . mt_rand() . "." . $extension; 

      if ($_FILES["file"]["error"][$key] > 0){ 
       $messages[] = "Return Code: " . $_FILES["file"]["error"][$i] . "<br>"; 
      }else{ 
       $imagethumbTrueLocation = "../../gallery/thumb/" . $name; 
       $imagelargeTrueLocation = "../../gallery/photos/" . $name; 

       $imagethumb = new SimpleImage(); 
       $imagethumb->load($_FILES["file"]["tmp_name"][$i]); 
       $imagethumb->resizeToWidth(230); 
       $imagethumb->save($imagethumbTrueLocation); 

       $imagethumblocation = "thumb/" . $name; 

       $imagelarge = new SimpleImage(); 
       $imagelarge->load($_FILES["file"]["tmp_name"][$i]); 
       $imagelarge->resizeToWidth(800); 
       $imagelarge->save($imagelargeTrueLocation); 

       $imagelargelocation = "photos/" . $name; 

       $queryresult = mysql_query("INSERT INTO gallery (thumbnail, highres) VALUES ('$imagethumblocation', '$imagelargelocation')") or die(mysql_error()); 
       if(!$queryresult) { 
        $messages[] = "Failed to insert record into the database."; 
       }else{ 
        $messages[] = "Record sucessfully added to the database."; 
       } 
      } 
     }else{ 
      $messages[] = "Invalid file"; 
     } 
    } 

} 

HTML

<form action="#" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file[]" id="file" multiple> 
    <input type="submit" name="upload" value="Upload" /> 
</form> 
+0

Как насчет 'post_max_size'? – Jon

+0

HI @Jon post_max_size - 64M. 47 изображений, которые я пытаюсь загрузить, составляют 4,5 МБ. –

+0

Привет, Оливер, я написал фрагмент кода, очень похожий на ваш (с использованием класса SimpleImage), и у меня почти такая же проблема. Загрузка может застрять, и ничего не происходит, браузер пытается что-то сделать, но я не могу понять, почему это не работает. Нет таймаута. Нет ошибки ... только значок загрузки вращается. Вы нашли решение своей проблемы? Это может помочь мне расследовать ... –

ответ

1

Я знаю, что ты упомянул max_file_uploads, но это может быть так, что 400 разве признал попробовать 99? Единственная причина, по которой я говорю это, - это конкретное число 20! каждый раз должен быть предел. Также вы проверили конфигурацию apache, там может быть и предел

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

0

Оказывается, мой хозяин установил свой собственный предел на это, что означает только VPS и выделенные счета могут изменить это значение :(

0

Если вы используете WAMP, перейдите на локальной странице, и нажмите на phpinfo(); .. в левом нижнем углу Если вы не можете использовать эту функцию в файле PHP

вы увидите: столбец «Loaded Configuration File», чтобы найти ваш php.ini

Поскольку есть несколько PHP. ini (один в папке php и другой в папке apach). Когда закончите, вы можете проверить его в php info() снова, просто CTRL + F и найдите «max_file_uploads».

Надеюсь, это поможет.

0

Откройте php.ini файл конфигурации и изменить ; Максимальное количество файлов, которые могут быть загружены с помощью одного запроса max_file_uploads = числу файлов, которые вы хотите апач для обработки событий на POST. Значение по умолчанию равно 20.

Смежные вопросы