Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][ftp] upload plików
Forum PHP.pl > Forum > Przedszkole
aber
Witam,
Mam pewien pewien problem z uploadem plików via ftp w php. Mianowicie, mam skrypt skrypt.php oraz folder temp. Jak sprawić, żeby skrypt.php uploadował wszystkie pliki i foldery z katalogu temp poprzez ftp?
Z góry dziękuję za pomoc
webdice
Pokaż co już napisałeś.
aber
Napisalem standardowe polączenie za pomocą ftp_ . Nie wiem tylko, czy muszę listować wszystkie podkatalogi i uploadować każdy plik z osobna za pomocą ftp_put, czy mogę wrzucić zawartość katalogu "hurtowo".
webdice
Każdy plik musisz wysłać osobno oraz osobno stworzyć każdy katalog. Napisz sobie funkcję która będzie przechodzić po katalogach. Gdy napotkasz katalog będziesz musiał użyć ftp_mkdir" title="Zobacz w manualu PHP" target="_manual, a gdy plik ftp_fput" title="Zobacz w manualu PHP" target="_manual.
aber
Dziękuję.
aber
Mam taki oko todzik, jeszcze bez obsługi folderów, ale - nie wiedzieć czemu zwraca mi taki oto bląd:
Kod
Warning: ftp_put() expects parameter 1 to be resource, null given in /var/www/ftp/ftp.php on line 24

  1. <?php 
  2. Kod:
  3. function ListFolder($path)
  4. {
  5. //using the opendir function
  6. $dir_handle = @opendir($path) or die("Unable to open $path");
  7.  
  8. //Leave only the lastest folder name
  9. $dirname = end(explode("/", $path));
  10.  
  11. //display the target folder.
  12. echo ("<li>$dirname\n");
  13. echo "<ul>\n";
  14. while (false !== ($file = readdir($dir_handle)))
  15. {
  16. if($file!="." && $file!="..")
  17. {
  18. if (is_dir($path."/".$file))
  19. {
  20. //Display a list of sub folders.
  21. ListFolder($path."/".$file);
  22. }
  23. else
  24. {
  25. ftp_put($ftp, $file, $file, FTP_BINARY);
  26. echo "<li>$file</li>";
  27. }
  28. }
  29. }
  30. echo "</ul>\n";
  31. echo "</li>\n";
  32.  
  33. //closing the directory
  34. closedir($dir_handle);
  35. }
  36.  
  37. if ($ftp = ftp_connect("moj.host")){
  38.  if (ftp_login($ftp, "login", "pass")) {
  39.  ftp_pasv( $ftp, 1);
  40.  ftp_chdir($ftp,"www");
  41.  ListFolder("temp");
  42.  }
  43.  else {
  44.  print "Blad logowania";
  45.  }
  46. }
  47. else {
  48. print "Blad polaczenia z hostem";
  49. }
  50. ftp_close($ftp);
  51.  
  52.  
  53. ?>
Crozin
Zmienna $ftp nie jest widoczna wewnątrz f-cji: ListFolder() - przekaż ją jako drugi argument:
  1. <?php
  2. function ListFolder($path, $ftp){
  3. //.....
  4. ?>
A wywołanie:
  1. <?php
  2. ListFolder("temp", $ftp);
  3. ?>
mike
Więcej o tym masz w dokumentacji: Zasięg zmiennych
aber
Dzięki, w takim razie jeszcze jedno pytanie; Pliki z głównego katalogu ładnie się wysyłają, problem jest natomiast z tworzeniem katalogu i uploadem plików do tegoż katalogu. Framgent zmodyfikowanego kodu:
  1. <?php
  2. if($file!="." && $file!="..")
  3. {
  4. if (is_dir($path."/".$file))
  5. {
  6. //Display a list of sub folders.
  7. $dir = $path."/".$file;
  8. ftp_mkdir($h, $dir);
  9. ListFolder($path."/".$file, $h);
  10. }
  11. else
  12. {
  13. ftp_put($h, $file, "temp/$file", FTP_BINARY);
  14. echo "<li>$file</li>";
  15. }
  16. }
  17. ?>

i błędy:
Kod
Warning: ftp_put(temp/img04.gif) [function.ftp-put]: failed to open stream: No such file or directory in /var/www/ftp/ftp.php on line 26

Kod
Warning: ftp_mkdir() [function.ftp-mkdir]: temp/images: No such file or directory in /var/www/ftp/ftp.php on line 21

Struktuja moich katalogów wygląda tak:

|-ftp:
|--ftp.php
|--temp:
|----abc.def // z uploadem tych plików nie ma problemu
|----images:
|------img04.gif
...

Z góry dzięki za jakis pomysł.
pyro
Cytat(webdicepl @ 21.04.2008, 00:15:53 ) *
Każdy plik musisz wysłać osobno oraz osobno stworzyć każdy katalog. Napisz sobie funkcję która będzie przechodzić po katalogach. Gdy napotkasz katalog będziesz musiał użyć [manual\]ftp_mkdir\[/manual\], a gdy plik [manual\]ftp_fput\[/manual\].


chyba ftp_chdir() ...
webdice
Cytat(pyro @ 21.04.2008, 15:03:48 ) *
chyba ftp_chdir() ...


Chodzi mi o to że funkcją ftp_mkdir" title="Zobacz w manualu PHP" target="_manual będzie tworzył katalog, a co do ftp_chdir" title="Zobacz w manualu PHP" target="_manual masz racje.
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.