Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

cURL cz. 2: Protokół FTP

Pobieranie i wysyłanie plików

Serwery FTP nie byłyby nikomu potrzebne, gdyby nie miały możliwości wymiany z użytkownikiem zasobów. Client URL Library udostępnia prosty sposób na transfer plików w obie strony.

Pobieranie plików

Aby pobrać plik, musimy utworzyć uchwyt z prawem zapisu do pliku, w którym zachowamy dane pochodzące z serwera. Następnie przekazujemy go jako wartość opcji CURLOPT_FILE. URL żądania musi być pełną ścieżką do pliku, który chcemy pobrać. Poniższy listing pokazuje jak pobrać plik dokument.txt z serwera FTP i zapisać go jako plik.txt w katalogu wykonywanego skryptu.

$ch = curl_init('ftp://login:haslo@example.com/dokument.txt');
$fh = fopen('plik.txt', 'w');
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_exec($ch);
fclose($fh);
curl_close($ch);

Wysyłanie plików

Zasada działania uploadu plików jest bardzo podobna. Wpierw otwieramy plik z prawem do odczytu danych. Uzyskany uchwyt przekazujemy cURL jako opcję CURLOPT_INFILE, co znaczy, że z tego pliku będą wczytywane dane. Musimy jeszcze powiadomić bibliotekę o zamiarze transferu ustawiając wartość opcji CURLOPT_UPLOAD na true. Po uwzględnieniu powyższych uwag jesteśmy w stanie napisać skrypt uploadujący pliki na serwer FTP.

$ch = curl_init('ftp://login:haslo@example.com/upload.txt');
$fh = fopen('plik.txt', 'r');
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_exec($ch);
fclose($fh);
curl_close($ch);

Powyższy kod tworzy nowy plik i zapisuje w nim przesłane dane. Co jednak zrobić, gdy chcemy dopisać dane do istniejącego pliku? Musimy wtedy posłużyć się opcją CURLOPT_FTPAPPEND, której należy przypisać wartość true. Warto dodać, że dopisywanie do nieistniejącego pliku nie powoduje błędu, gdyż tworzony jest pusty element, do którego dopisywane są dane.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (4)
Kolejność
Czwartek 20 Wrzesień 2007 8:03:24 pm - Ludvik

Możesz tak zrobić, ale w tym przypadku nie będzie miało to wpływu na działanie. Jak pobierasz jeden plik, to będzie to wyglądało logiczniej, ale przy pobieraniu kilku nie ma sensu czekać do zakończenia połączenia, blokując plik, który nie jest używany.

Temat
Czwartek 20 Wrzesień 2007 6:44:26 pm - sedziwoj

Coś jest nie tak z przechodzeniem po krokach. (to tak tylko przy okazji)
Tak się zastanawiam czemu masz kolejność:
1)utworzenie uchwytu pliku
2)inicjalizacja cURL
3)wykonanie cURL
4)zamknięcie pliku
5)zamknięcie cURL
Czy nie lepiej zamienić 4 z 5?

Postaram się to poprawić
Sobota 15 Wrzesień 2007 3:38:04 pm - Ludvik

Ale będę mógł to zrobić dopiero, jak skończę część trzecią :) Dzięki za uwagę.

Artykuł bardzo przydatny
Czwartek 06 Wrzesień 2007 10:50:19 am - trax <admin_smc_at_o2.pl>

Jeden szkopuł: Należy się małe wyjaśnienie co do listingu 3.1 . Treść listingu jest w porządku, ale tekst objaśniający jest miejscami niejednoznaczny i coś tam się nie zgadza,

Suma sumarum: artykuł bardzo przydatny

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System