Mam formularz z dynamicznie generowanymi w javascripcie polami file o nazwach "file1", "file2", "file3" itd. Przed wysłaniem formularza srypt generuje jeszcze niewidzialny input o nazwie "file" przekazujący ilość wygenerowanych inputów.
Oto kod odpowiedzialny za zapis plików na serwerze:
  1. <?php
  2. for($i=0; $i<$_POST["file"]; $i++) {
  3. if($_POST["file".($i+1)]!='') {
  4. if (is_uploaded_file($_FILES["file".($i+1)]["tmp_name"])) {
  5. global $limit;
  6. $limit_przekroczony = null;
  7. if ($this->pliki+$_FILES["file".($i+1)]["size"]<$limit) {
  8. $dozwolony = true;
  9. global $niedozwolone;
  10. $info = pathinfo($_FILES["file".($i+1)]["tmp_name"]);
  11. foreach($niedozwolone as $wartosc) if($info["extension"]==$wartosc){
  12. $bledy[] = $info["extension"];
  13. $dozwolony = false;
  14. break;
  15. }
  16. if($dozwolony)
  17. move_uploaded_file($_FILES["file".($i+1)]["tmp_name"],
  18. $this->katalog."/pliki/".$_FILES["file".($i+1)]["name"]);
  19. }
  20. else $bledy[] = "limit_dyskowy";
  21. }
  22. else $bledy[] = "blad_przeslania";
  23. }
  24. }
  25. ?>
kod obsługi błędów:
  1. <?php
  2. $komunikat = "";
  3. if($bledy) foreach($bledy as $wartosc) {
  4. if($wartosc=="limit_dyskowy") $komunikat .= "Nie masz wystarczającej ilości miejsca na dysku!n";
  5. elseif($wartosc=="blad_przeslania") $komunikat .= "Błąd podczas przesłania pliku!n";
  6. else $komunikat .= "Pliki o rozszeżeniu ".$wartosc." są niedozwolone z powodów bezpieczeństwa!n";
  7. }
  8. if($komunikat=="") $komunikat = "Twoje dane zostały zaktualizowane.";
  9. else $komunikat = nl2br(rtrim($komunikat));
  10. return $komunikat;
  11. ?>
i za każdym razem wyskakuje "Błąd podczas przesłania pliku!", dlaczego?