Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie wielu plików - duże pliki, duża ilość
Forum PHP.pl > Forum > PHP
Abbop
Witam,
posiadam problem z dodawaniem plików na serwer, przesłanych z formularza. Wszystko działa dobrze na mniejszych plikach. Bez problemu dodają się te pliki na serwer i do bazy danych. Jeśli jednak chcę wrzucić na serwer więcej niż 20MB, to się niestety nie da. Żaden błąd nie wyskakuje, po prostu nic nie jest przesyłane przez _POST. Próbowałem pozmieniać w ustawieniach php.ini, ale nadal nic nie pomogło.
Zwiększyłem max_execution_time do godziny
Zwiększyłem max_file_uploads do 100 plików
Zwiększyłem memory_limit do 512M
Zwiększyłem output_buffering do 30M, wcześniej je wyłączyłem i też nie pomogło.
Zwiększyłem post_max_size do 64M
upload_max_filesize to 64M

Oto screeny php.ini:




Tu jest kod formularza, gdyby ktoś chciał zobaczyć:

CODE
  1. <form action="dodawaniealbumu.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="albumminiatura" id="albumminiatura" accept="image/jpeg" style="color:whitesmoke; padding-left: 5px;"/>
  3. </div><output id="list1"></output></center>
  4. </br><img src="img/separator.png" style="padding-bottom: 5px;"/></br>
  5. <span style="font-size: 15px; color:whitesmoke; size:100px">Nazwa albumu:</span>
  6. <input type="text" name="albumnazwa" id="albumnazwa"/>
  7. </div></center>
  8. </br><img src="img/separator.png" style="padding-bottom: 5px;"/></br>
  9. <span style="font-size: 15px; color:whitesmoke; size:100px">Hasło albumu:</span>
  10. <input type="text" name="albumhaslo" id="albumhaslo"/></br>
  11. <span style="font-size: 8px; color:red;" title="Zaznacz, aby album był widoczny bez podawania hasła">brak hasła</span><input type="checkbox" name="brakhasla" id="brakhasla" value="1"/>
  12. </div></center>
  13. </br><img src="img/separator.png" style="padding-bottom: 5px;"/></br>
  14. <span style="font-size: 15px; color:whitesmoke; size:100px">Czy album ma być widoczny?</span>
  15. <input type="checkbox" name="widoczny" id="widoczny" value="1" checked/>
  16. </div></center>
  17. </br><img src="img/separator.png" style="padding-bottom: 5px;"/></br>
  18. <span style="font-size: 15px; color:whitesmoke; size:100px">Zdjęcia <u>[Zaznacz wszystkie te, które chcesz dodać]</u>: (.jpg lub .jpeg)</span>
  19. <div id="pliki">
  20. <input type="hidden" name="ilezdj" value="1"/>
  21. <input type="file" name="file[]" id="files" class="upload" multiple="multiple" />
  22. </div>
  23.  
  24. <div>
  25. <br/><div id="prbar"><div id="prpos">ŁADOWANIE ZDJĘĆ</div></div><br/>
  26. <input type="submit" value="Dodaj ten album!" onclick="progress();"/>
  27. </div>
  28. </form></div></center>


A tu jest zawartość pliku php:
CODE
  1. <?php
  2. require "polacz.php";
  3. require_once 'include/ThumbLib.inc.php';
  4. $folder = 'zdjecia';
  5. connection();
  6. ini_set('upload_max_filesize', '512M');
  7. ini_set('post_max_size', '512M');
  8. ini_set('max_input_time', 0);
  9. ini_set('max_execution_time', 3600);
  10. ini_set('memory_limit', '512M');
  11. ini_set('display_errors', 'ON');
  12. ini_set('output_buffering', '100M');
  13.  
  14. if(is_uploaded_file($_FILES['albumminiatura']['tmp_name']) || ($_POST['albumnazwa'] != "") || ($_POST['albumhaslo'] != "")){
  15. if(!is_uploaded_file($_FILES['albumminiatura']['tmp_name'])){
  16. header("Location:dodajalbum.php?zm=2");
  17. }
  18. else if($_POST['albumnazwa'] == ""){
  19. header("Location:dodajalbum.php?zm=10");
  20. }
  21. else if(($_POST['albumhaslo'] == "") && !isset($_POST['brakhasla'])){
  22. header("Location:dodajalbum.php?zm=11");
  23. }
  24. else if(!is_uploaded_file($_FILES['file']['tmp_name'][0])){
  25. header("Location:dodajalbum.php?zm=5");
  26. }
  27. else{if((($_FILES["albumminiatura"]["type"] == "image/jpeg") || ($_FILES["albumminiatura"]["type"] == "image/jpg")) && (strlen($_FILES['albumminiatura']['name']) <= 50)){
  28. if((($_FILES["file"]["type"][0] == "image/jpeg") || ($_FILES["file"]["type"][0] == "image/jpg")) && (strlen($_FILES['file']['name'][0]) <= 100)){
  29. if((strlen($_POST['albumnazwa'])) <= 150){
  30. if((strlen($_POST['albumhaslo'])) <= 30){
  31. $i = 1;
  32. while(mysql_num_rows(mysql_query("SELECT * FROM albumy WHERE id = ".$i.";")) == 1){
  33. $i = $i+1;
  34. }
  35. $nazdj= "album".$i.".jpg";
  36. $polozeniealbum = $folder."/albumy/miniatury";
  37. $polozeniealbum2 = $folder."/albumy/".$i;
  38. $sciezkaalbum = $polozeniealbum."/".$nazdj;
  39. $sciezkaalbum2 = $polozeniealbum2."/".$nazdj;
  40. mkdir($polozeniealbum2, 0777);
  41. $nazwa = $_POST['albumnazwa'];
  42. $haslo = $_POST['albumhaslo'];
  43. if(isset($_POST['brakhasla'])){
  44. $brakhasla = 1;
  45. }
  46. else if(!isset($_POST['brakhasla'])){
  47. $brakhasla = 0;
  48. }
  49. if(isset($_POST['widoczny'])){
  50. $widoczny = 1;
  51. }
  52. else if(!isset($_POST['widoczny'])){
  53. $widoczny = 0;
  54. }
  55. $j = 1;
  56. while(mysql_num_rows(mysql_query("SELECT * FROM albumy WHERE priorytet = ".$j.";")) == 1){
  57. $j = $j+1;
  58. }
  59. require_once 'include/ThumbLib.inc.php';
  60. // ----------------------------------------------------------------------
  61. list($width, $height) = getimagesize($_FILES['albumminiatura']['tmp_name']);
  62. $thumb = PhpThumbFactory::create($_FILES['albumminiatura']['tmp_name']);
  63. if($width > $height){
  64. $thumb->adaptiveResize(225, 150);}
  65. else{
  66. $thumb->adaptiveResize(150, 225);
  67. }
  68. $thumb->save($sciezkaalbum, 'jpg');
  69. mysql_query('SET NAMES utf8');
  70. mysql_query('SET CHARACTER_SET utf8_unicode_ci');
  71. mysql_query("insert into albumy values(".$i.",".$j.",'".$nazwa."', '".$haslo."', ".$brakhasla.", '".$nazdj."', '".$polozeniealbum."','".$sciezkaalbum."', ".$widoczny.");");
  72. $koniec2 = 0;
  73. while($koniec2 < count($_FILES['file']['name'])){
  74. $idzdj = 1;
  75. if(is_uploaded_file($_FILES['file']['tmp_name'][$koniec2])){
  76. while(mysql_num_rows(mysql_query("SELECT * FROM zdjecia WHERE id = ".$idzdj.";")) == 1){
  77. $idzdj = $idzdj+1;
  78. }
  79. $numer2 = 1;
  80. while(mysql_num_rows(mysql_query("SELECT * FROM zdjecia WHERE numer = ".$numer2.";")) == 1){
  81. $numer2 = $numer2+1;
  82. }
  83. $numer = $koniec2+1;
  84. $nazdj2= $numer.".jpg";
  85. $polozeniezdj2 = $folder."/albumy/".$i;
  86. $sciezkazdj2 = $polozeniezdj2."/".$nazdj2;
  87. mysql_query('SET NAMES utf8');
  88. mysql_query('SET CHARACTER_SET utf8_unicode_ci');
  89. mysql_query("insert into zdjecia values(".$idzdj.",".$i.",".$numer.", '".$nazdj2."', '".$polozeniezdj2."', '".$sciezkazdj2."');");
  90. list($width, $height) = getimagesize($_FILES['file']['tmp_name'][$koniec2]);
  91. if(($width > 1200) || ($height > 900)){
  92. require_once 'include/ThumbLib.inc.php';
  93. $thumb = PhpThumbFactory::create($_FILES['file']['tmp_name'][$koniec2]);
  94. if($width > $height){
  95. $thumb->adaptiveResize(1200, 900);}
  96. else{
  97. $thumb->adaptiveResize(900, 1200);
  98. }
  99. $thumb->save($sciezkazdj2, 'jpg');
  100. }
  101. else{
  102. move_uploaded_file($_FILES['file']['tmp_name'][$koniec2], $sciezkazdj2);
  103.  
  104. }
  105. }
  106. else{
  107. header("Location:dodajalbum.php?zm=2");
  108. }
  109. $koniec2 = $koniec2+1;
  110. }
  111. }
  112. else{header("Location:dodajalbum.php?zm=4"); }
  113. }
  114. else{
  115. header("Location:dodajalbum.php?zm=22");
  116. }
  117. }
  118. else{
  119. if(($_FILES["file"]["type"][0] != "image/jpeg") || ($_FILES["file"]["type"][0] != "image/jpg")){header("Location:dodajalbum.php?zm=131");}
  120. else if(strlen($_FILES['zdjeciealbum1']['name']) > 100){header("Location:dodajalbum.php?zm=13");}}
  121. }
  122. else{
  123. if(($_FILES["albumminiatura"]["type"] != "image/jpeg") || ($_FILES["albumminiatura"]["type"] != "image/jpg")){header("Location:dodajalbum.php?zm=31");}
  124. else if(strlen($_FILES['albumminiatura']['name']) > 50){header("Location:dodajalbum.php?zm=3");}
  125. else{
  126. header("Location:dodajalbum.php?zm=999");}
  127. }
  128. }}?>
  129. <?php
  130. header("Location:dodajalbum.php?zm=1");
  131. ?>


Strona znajduje się na hostingu OVH. Wszelkie zmiany w ustawieniach php dokonywałem przez plik .user.ini i bezpośrednio z kodu php. Proszę o pomoc w rozwiązaniu problemu, ponieważ zależy mi na tym, abym mógł dodawać sporą ilość dużych zdjęć na serwer. Szukałem już różnych rozwiązań w internecie, jednak nic nie pomaga.
untorched
Próbowałeś zrealizować uploader, który będzie wysyłał jeden/kilka plików przy jednym zapytaniu? Miałem podobny problem i takie rozwiązanie jak najbardziej pomogło, a także pojawiły się fajne możliwości "user-friendly" jak np. pokazanie które pliki zostały już wgrane
Abbop
Szukałem w necie gotowych rozwiązań, ale żadne się nie sprawdziło. Nie jestem jakiś doświadczony w php i przyznam, że niektóre gotowce były dość trudne do zimplementowania i dopasowania do moich wymagań (dodawanie wielu plików, zapisywanie za każdym razem do innego folderu, własne nazwy plików, wyświetlanie plików, które będą przesyłane, dodawanie plików do bazy, progress bar). Jeśli znasz jakieś fajne, sprawdzone rozwiązanie, to chętnie bym mu się przyjrzał bliżej. Choć nie ukrywam, że najlepiej by było, gdyby udało się dojść do tego, dlaczego mój kod nie działa. Wydaje mi się, że wina leży w ustawieniach php, tylko nie wiem, który parametr jest za to odpowiedzialny.

P.S. nie wiem, czy dobrze zrozumiałem Twoje słowa. Nie wiem, w jaki sposób można wysyłać pliki w jednym zapytaniu w php. Czytałem coś na necie o springach, kontrolerach itd, ale dla mnie to czarna magia póki co sad.gif
untorched
Kiedyś użyłem tego: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/
Z parametrami:
Kod
limitMultiFileUploads: 1,
sequentialUploads: true,
limitConcurrentUploads: 1,


Przy takim ustawieniu, gdy chcemy wrzucić więcej plików to każdy z nich jest wysyłany pojedynczo(tak jakbyśmy ręcznie wysyłali po jednym pliku przez formularz).

Może Ci to pomoże smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.