Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload wiellu plików do wielu katalogów
Forum PHP.pl > Forum > PHP
Mystic007
Witam! Mam wielki problem, napisałem skrypt który będzie do każdego katalogu w temp/ wgrywał pliki przesłane przez formularz, jednak pliki uploadują się tylko do pierwszego katalogu. Patrzę się w kod już paręnaście minut i nie wiem gdzie jest błąd. Proszę o pomoc.
  1. <?PHP
  2. if(!empty($_POST)){
  3. $kata = '/srv/www/htdocs/web1122/html/upload/temp/';
  4. $kat = opendir($kata);
  5. while ($plik = readdir($kat)){
  6.  if(!strstr($plik,'.') && is_dir($kata.$plik)){
  7.  for($i=1;$i<=5;$i++){
  8.  $plik_tmp = $_FILES['f'.$i]['tmp_name'];
  9.  $plik_nazwa = $_FILES['f'.$i]['name'];
  10.  $plik_rozmiar = $_FILES['f'.$i]['size'];
  11.  
  12.  if(!empty($plik_nazwa)){
  13. $location = $kata.$plik.'/';
  14. if($plik_rozmiar<=$_POST['MAX_FILE_SIZE']){
  15.  
  16. if(move_uploaded_file($plik_tmp, $location.$plik_nazwa)) {
  17.  print'<u style="color:green;">Plik '.$plik_nazwa.' został załadowany do katalogu '.$location.'</u>';
  18. }else print'<u style="color:red;">Plik '.$plik_nazwa.' nie został załadowany do katalogu '.$location.'</u>';
  19.  
  20. }else print'<u style="color:red;">Za duży rozmiar pliku '.$plik_nazwa.'</u>';
  21. print'<br />';
  22. }
  23. }
  24.  }
  25.  }
  26. }
  27. closedir($kat);
  28. ?>

  1. <h1>Wyślij pliki</h1>
  2. <form enctype="multipart/form-data" action="upload.php" method="POST">
  3. <input type="hidden" name="MAX_FILE_SIZE" value="10000" />
  4. Plik do wysłania:<br />
  5. <input name="f1" type="file" /><br />
  6. <input name="f2" type="file" /><br />
  7. <input name="f3" type="file" /><br />
  8. <input name="f4" type="file" /><br />
  9. <input name="f5" type="file" /><br />
  10. <input type="submit" value="Wyślij" />
  11. </form>


Wynik działania skryptu:
Cytat
Plik bn.png został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/dwa/
Plik ajax-loader.gif został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/dwa/
Plik bn.png nie został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/raz/
Plik ajax-loader.gif nie został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/raz/
Plik bn.png nie został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/trzy/
Plik ajax-loader.gif nie został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/trzy/
Plik bn.png nie został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/cztery/
Plik ajax-loader.gif nie został załadowany do katalogu /srv/www/htdocs/web1122/html/upload/temp/cztery/
Cienki1980
Wystarczy zajrzeć do manuala i sprawdzić jak działa move_uploaded_file()

Funkcja ta przenosi a nie kopiuje pliki. Po pierwszym obrocie pętli nie będzie już plików do przenoszenia bo ich tam nie będzie.

Możesz użyć copy() a dopiero za ostatnim obrotem pętli funkcji move_uploaded_file().
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.