[php] upload na ftp
[php] upload na ftp
czy mozna wyslac plik przez php na serwer ftp?
jesli tak to moze ktos wie jak to zrobic..
z gory dzieki
jesli tak to moze ktos wie jak to zrobic..
z gory dzieki
Re: [php] upload na ftp
opcja 1. (polecam) ściągnij sobie manual do php (php_manual_pl.chm) np. stąd http://pl2.php.net/get/php_manual_pl.ch ... his/mirror
i wyszukaj hasło FTP
opcja 2. w razie całkowitego braku czasu (chęci) zaopodaję od powiedni fragment z poręcznika:
Przykład 1. Przykład użycia FTP
[php]<?php
// ustaw podstawowe połączenie
$conn_id = ftp_connect($ftp_server);
// zaloguj się nazwą użytkownika i hasłem
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// sprawdź połączenie
if ((!$conn_id) || (!$login_result)) {
echo "Połączenie FTP się nie powiodło!";
echo "Próbowano połączyć się do $ftp_server jako użytkownik"
. $ftp_user_name;
die;
} else {
echo "Połączony z $ftp_server jako użytkownik $ftp_user_name";
}
// prześlij plik
$upload = ftp_put($conn_id, $plik_docelowy, $plik_zrodlowy, FTP_BINARY);
// sprawdź stan operacji
if (!$upload) {
echo "Wstawienie pliku przez FTP się nie powiodło!";
} else {
echo "Przesłano $plik_zrodlowy na $ftp_server jako $plik_docelowy";
}
// zamknij strumień FTP
ftp_close($conn_id);
?>[/php]
Re: [php] upload na ftp
ok dzieki tylko takie pytanie..
podlaczylem sie do serwa i wszsytko gra az do momentu kiedy chce cos grac na serwer
[php]$upload = ftp_put ($conn_id, $plik_docelowy, $plik_zrodlowy, FTP_BINARY);[/php]
wytlumacz mi co mam podac pod $plik_zrodlowy..
rozumiem ze $plik_zrodlowy to jest ten plik z kompa wiec mam podac do niego sciezke typu C:/windows/pulpit/costam.txt ? od razu mowie ze taka opcja nie dziala..upload dziala tylko wtedy gdy $plik_zrodlowy = ""; a chyba nie o to chodzi..
podlaczylem sie do serwa i wszsytko gra az do momentu kiedy chce cos grac na serwer
[php]$upload = ftp_put ($conn_id, $plik_docelowy, $plik_zrodlowy, FTP_BINARY);[/php]
wytlumacz mi co mam podac pod $plik_zrodlowy..
rozumiem ze $plik_zrodlowy to jest ten plik z kompa wiec mam podac do niego sciezke typu C:/windows/pulpit/costam.txt ? od razu mowie ze taka opcja nie dziala..upload dziala tylko wtedy gdy $plik_zrodlowy = ""; a chyba nie o to chodzi..
Re: [php] upload na ftp
no wszystko fajnie tylko jeżeli mówimy o scieżce katalogów w windows to separatorem katalogów jest \ i php nie robi tu wyjątku.
więc masz trzy możliwości:
[php]<?php
$plik_zródłowy = "c:\\windows\\pulpit\\a.txt";
$plik_zródłowy = 'c:\windows\pulpit\a.txt';
$plik_zródłowy = 'c:\\windows\\pulpit\\a.txt';
?>[/php]
wyjaśniam:
jeśli ciąg znaków zamkniesz w cudzysłowach to niektóre (escape secquences) sekwencje znaków zaczynających się od \ są zamieniane na znaki ascii o kodach poniżej 32 np \n zostanie zamienione na znak nowej linii jeśli ciąg znaków zamkniesz w apostrofach to nie będzie ich zamieniał, a jeśli trafi się tam \\ to zamieni to na \.
podsumowując
1. zawsze dawaj \\ to nic ci się nie pogmatwa
2. zamykaj ciąg znaków tym samym znakiem którym go otworzyłeś bo zrobi się siara.
pozdro i nara
ps.
w adresie docelowym (ftp) nie ważne jaki by on był, windowsowy czy unixowy użyjesz zawsze / do oddzielenia katalogów
więc masz trzy możliwości:
[php]<?php
$plik_zródłowy = "c:\\windows\\pulpit\\a.txt";
$plik_zródłowy = 'c:\windows\pulpit\a.txt';
$plik_zródłowy = 'c:\\windows\\pulpit\\a.txt';
?>[/php]
wyjaśniam:
jeśli ciąg znaków zamkniesz w cudzysłowach to niektóre (escape secquences) sekwencje znaków zaczynających się od \ są zamieniane na znaki ascii o kodach poniżej 32 np \n zostanie zamienione na znak nowej linii jeśli ciąg znaków zamkniesz w apostrofach to nie będzie ich zamieniał, a jeśli trafi się tam \\ to zamieni to na \.
podsumowując
1. zawsze dawaj \\ to nic ci się nie pogmatwa
2. zamykaj ciąg znaków tym samym znakiem którym go otworzyłeś bo zrobi się siara.
pozdro i nara
ps.
w adresie docelowym (ftp) nie ważne jaki by on był, windowsowy czy unixowy użyjesz zawsze / do oddzielenia katalogów
Re: [php] upload na ftp
jednak to nie pomoglo 
nadal jest: Wstawienie pliku przez FTP się nie powiodło!
nadal jest: Wstawienie pliku przez FTP się nie powiodło!
Re: [php] upload na ftp
przed chwilą specjalnie sprawdziłem to: przesłałem plik z windowsa do ftp.webpark.pl zadziałało znakomicie.
może błędnie wpisujesz ścieżkę docelową, nie może ona być pusta, może to być np. a.txt, spróbuj na początek
[php]<?php
$plik_docelowy = 'a.txt';
?>[/php]
(bez ścieżki), bo może popełniasz gdzieś błąd w ścieżce dostępu, nie jest ona nigdy w stylu ftp.webpark.pl/a.txt tylko raczej /.www/a.txt albo /usr/home/adax2000/www/a.txt
może też problem leży gdzie indziej np. nie masz uprawnień by zapisywać w danym katalogu, plik już istnieje a ty nie masz prawa go nadpisać, sprawdź najpierw przy pomocy total commandera czy wogóle uda ci się coś tam skopiować (po skopiowaniu wciśnij ctrl+r, żeby odświeżyć widok).
popróbuj z innym plikiem, serverem, sama procedura jest wzorcowa (wzięta z podręcznika) i działa idealnie w związku z czym nie wiem jak ci pomóc.
pozdro
ps.
[php]<?php
ftp_pasv ($conn_id, TRUE); //przełącza server w tryb pasywny
ftp_pasv ($conn_id, FALSE); //przełącza server w tryb aktywny
?>[/php]
może to coś pomoże, nie wiem
może błędnie wpisujesz ścieżkę docelową, nie może ona być pusta, może to być np. a.txt, spróbuj na początek
[php]<?php
$plik_docelowy = 'a.txt';
?>[/php]
(bez ścieżki), bo może popełniasz gdzieś błąd w ścieżce dostępu, nie jest ona nigdy w stylu ftp.webpark.pl/a.txt tylko raczej /.www/a.txt albo /usr/home/adax2000/www/a.txt
może też problem leży gdzie indziej np. nie masz uprawnień by zapisywać w danym katalogu, plik już istnieje a ty nie masz prawa go nadpisać, sprawdź najpierw przy pomocy total commandera czy wogóle uda ci się coś tam skopiować (po skopiowaniu wciśnij ctrl+r, żeby odświeżyć widok).
popróbuj z innym plikiem, serverem, sama procedura jest wzorcowa (wzięta z podręcznika) i działa idealnie w związku z czym nie wiem jak ci pomóc.
pozdro
ps.
[php]<?php
ftp_pasv ($conn_id, TRUE); //przełącza server w tryb pasywny
ftp_pasv ($conn_id, FALSE); //przełącza server w tryb aktywny
?>[/php]
może to coś pomoże, nie wiem
-
FanFataL
- Nowy

- Posty: 113
- Rejestracja: pn lut 28, 2005 1:33 am
- Lokalizacja: Kraków / Katowice / Bydgoszcz
- Kontakt:
Re: [php] upload na ftp
Nie wiem czy doczytałeś manulala odnośnie funkcji [manual]ftp_put[/manual].
[php]<?php
// ...
$plik_zródłowy = fopen('a.txt','r');
upload = ftp_put ($conn_id, $plik_docelowy, $plik_zrodlowy, FTP_BINARY);
// ...
?>[/php]
Pozdrawiam
...
Co oznacza że $plik_zródłowy to nie ścieżka do pliku tylko uchwyt dopliku otwarty przez [manual]fopen[/manual] czyliint ftp_fput ( int strumien_ftp, string plik_zdalny, int fp, int tryb [, int pozycja_początkowa] )
ftp_fput() umieszcza na serwerze dane pobrane ze wskaźnika fp do końca pliku.
[php]<?php
// ...
$plik_zródłowy = fopen('a.txt','r');
upload = ftp_put ($conn_id, $plik_docelowy, $plik_zrodlowy, FTP_BINARY);
// ...
?>[/php]
Pozdrawiam
...
Re: [php] upload na ftp
czyli niestetyWarning: fopen(C:\\WINDOWS\\Pulpit\\test.txt): failed to open stream: No such file or directory in /home/download/upload.php on line 24
-
FanFataL
- Nowy

- Posty: 113
- Rejestracja: pn lut 28, 2005 1:33 am
- Lokalizacja: Kraków / Katowice / Bydgoszcz
- Kontakt:
Re: [php] upload na ftp
[manual]fopen[/manual] dziła na plikach dostępnych na serwerze tudzień np. na krasnalu jak to jest windows ;]Asit pisze:czyli niestetyWarning: fopen(C:\\WINDOWS\\Pulpit\\test.txt): failed to open stream: No such file or directory in /home/download/upload.php on line 24
Czyli nie da sie zrobic bezpośredniego uploadu na ftpa pliku z kompa, trzeba najpierw wgrać na serwer ;] np. przez [manual]move_uploaded_file[/manual] i dopiero wtedy robisz przez ftpa ;]
Pozdrawiam
...
Re: [php] upload na ftp
fanfatal: to ty nie doczytałeś o czym my tu wogóle mówimy, bo my tu mówimy o
ftp_put, a ty mówisz o ftp_fput a to są dwie różne instrukcje, nie mieszaj chłopakowi w głowie
ale nasunąłeś mi pewną myśl:
asit: zakładałem dotąd, że serwer i plik masz tak samo uruchomione pod windowsem na tym samym kompie jeśli jest inaczej to oczywiście musisz wpierw
pobrać (np. ftp_get) żeby wysłać wspomnij jeśli tak jest to rozwinę wrazie czego
2. czy ten plik napewno istnieje w tym katalogu o tej nazwie?
ftp_put, a ty mówisz o ftp_fput a to są dwie różne instrukcje, nie mieszaj chłopakowi w głowie
ale nasunąłeś mi pewną myśl:
asit: zakładałem dotąd, że serwer i plik masz tak samo uruchomione pod windowsem na tym samym kompie jeśli jest inaczej to oczywiście musisz wpierw
pobrać (np. ftp_get) żeby wysłać wspomnij jeśli tak jest to rozwinę wrazie czego
2. czy ten plik napewno istnieje w tym katalogu o tej nazwie?
Re: [php] upload na ftp
ale czekaj.. bo sie zaplatalem ;]
ja nie mam pliku na serwie.. ja chce go tam dopiero wgrac przez upload..
wiec ftp_get chyba odpada.. probuje wgrac plik lokalny na serwer ftp a nie odwrotnie..
FanFataL rzeczywiscie mowil o ftp_fput ale z move_uploaded_file mial dobry pomysl.. tyle ze nie dokonca potrafie polaczyc te dwie rzeczy..
chodzi mi o move_uploaded_file i ftp_put.. nie wiem czy dobrze rozumuje wiec jesli nie to poprawiac!
no wiec najpierw wysylam plik na serwer przez move_uploaded_file a jak plik (tzn plik tymczasowy) jest juz tam to stosuje ftp_put mam racje? tyle ze nadal to mi nie dziala :/ przez caly czas jest: failed to open stream
ja nie mam pliku na serwie.. ja chce go tam dopiero wgrac przez upload..
wiec ftp_get chyba odpada.. probuje wgrac plik lokalny na serwer ftp a nie odwrotnie..
FanFataL rzeczywiscie mowil o ftp_fput ale z move_uploaded_file mial dobry pomysl.. tyle ze nie dokonca potrafie polaczyc te dwie rzeczy..
chodzi mi o move_uploaded_file i ftp_put.. nie wiem czy dobrze rozumuje wiec jesli nie to poprawiac!
no wiec najpierw wysylam plik na serwer przez move_uploaded_file a jak plik (tzn plik tymczasowy) jest juz tam to stosuje ftp_put mam racje? tyle ze nadal to mi nie dziala :/ przez caly czas jest: failed to open stream
Re: [php] upload na ftp
jeżeli skrypt jest uruchomiony na zdalnym serwerze i przy jego pomocy chcesz pobrać plik ze swojego komputera, to:
1. musisz uruchomić u siebie server ftp np. PWS w starych windowsach albo IIS na nowszych
2. umieścić pliki do pobrania w katalogu, który będziesz udostępniał jako FTP
3. w skrypcie w miejsce $ftp_server wpisz swój IP
4. zamiast ftp_put daj ftp_get składnia jest taka sama tylko tam gdzie miałeś $plik_docelowy teraz jest $plik_zrodłowy
to tyle
pozdro i nara
1. musisz uruchomić u siebie server ftp np. PWS w starych windowsach albo IIS na nowszych
2. umieścić pliki do pobrania w katalogu, który będziesz udostępniał jako FTP
3. w skrypcie w miejsce $ftp_server wpisz swój IP
4. zamiast ftp_put daj ftp_get składnia jest taka sama tylko tam gdzie miałeś $plik_docelowy teraz jest $plik_zrodłowy
to tyle
pozdro i nara
