Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][ftp] upload plików
-aber-
post
Post #1





Goście







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
Go to the top of the page
+Quote Post
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Pokaż co już napisałeś.
Go to the top of the page
+Quote Post
-aber-
post
Post #3





Goście







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".
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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.
Go to the top of the page
+Quote Post
-aber-
post
Post #5





Goście







Dziękuję.
Go to the top of the page
+Quote Post
-aber-
post
Post #6





Goście







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. ?>
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Więcej o tym masz w dokumentacji: Zasięg zmiennych
Go to the top of the page
+Quote Post
-aber-
post
Post #9





Goście







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ł.
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


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() ...


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
webdice
post
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:12