Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cURL i pobieranie pliku na serwer z HTTPS
Forum PHP.pl > Forum > PHP
Sztef89
Witam,

Siedzę od parunastu godzin nad rozwiązaniem problemu jednak nie wiem jak go rozwiązać. Chciałbym pobrać plik z mojego konta z serwisu Dropbox na mój serwer za pomocą cURL'a jednak po ustawieniu odpowiednich parametrów, pobieranie nie działa. Żeby nie być gołosłownym napisałem taki kod:

  1. $c = curl_init();
  2. curl_setopt($c, CURLOPT_URL, 'https://www.dropbox.com/s/3lmrjqqe9mjmffv/pliktestowy.rar?dl=1'); // Adres do pliku
  3. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true); //Włączona obsługa SSL
  4. curl_setopt($c ,CURLOPT_SSL_VERIFYHOST, 2); //Też coś od SSL ;)
  5. curl_setopt($c ,CURLOPT_CAINFO, dirname(__FILE__) . '/ca-bundle.pem'); // Próbowałem użyć certyfikatu - na nic to się nie zdało, nie mam pewności czy ten certifikat co mam jest poprawny...
  6. curl_setopt($c, CURLOPT_HEADER, 1); //Wyświetlenie nagłówka zwróconego przez serwer
  7. curl_setopt($c, CURLOPT_NOBODY, true); //Wyłączenie wyświetlania strony / pliku
  8. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); //Czy ma zwrócić transfer
  9. curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); //Obsługa przekierowań
  10. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17');
  11. $h = curl_exec($c);
  12.  
  13. echo curl_getinfo($c,CURLINFO_CONTENT_LENGTH_DOWNLOAD); // Odczytanie wielkości pliku. Wyświetla "-1" czyli wystąpił błąd


Używając funkcji file_get_content('https://www.dropbox.com/...') wszystko idzie pięknie, przekierowania działają, nie trzeba się bawić w jakieś ustawianie lecz ta funkcja mnie zbytnio ogranicza i nie mam dostępu do wielu opcji jakie ma cURL.

Możecie testować skrypt używając linku podanego w pierwszym kodzie - działa bezproblemowo przez przeglądarkę.

Z góry bardzo dziękuję za pomoc !
cudny
Ale po co Ci używać CURL ?
On dopiero Cię ogranicza wink.gif

Poniżej link do klas obsługujących API Dropboxa, do tego logowanie via OAuth...

http://code.google.com/p/dropbox-php/wiki/Dropbox_API
zegarek84
  1. curl_setopt($c, CURLOPT_NOBODY, true); //Wyłączenie wyświetlania strony / pliku

przecież to Ci wyłącza czytanie ciała strony przez curl'a, jeśli masz przekazać informację do serwera i nie interesuje Cię co zwróci oprócz nagłówków...

jeśli manual nie wystarcza to odsyłam:
Does CURLOPT_NOBODY still download the body - using bandwidth

ps.
a ten post w manualu powinien Ci ułatwić wyciąganie danych z rządania...
http://de3.php.net/manual/en/function.curl-exec.php#80442
ps.
jakbyś trochę popisał na socketach zamiast korzystać z curl'a lepiej zrozumiałbyś protokół HTTP a to może Ci się w przyszłości przydać jeśli zamierzasz bawić się w "boty" nawet w innych językach programowania
Sztef89
Cytat(cudny @ 31.01.2013, 17:34:12 ) *
Ale po co Ci używać CURL ?
On dopiero Cię ogranicza wink.gif


Nie chce używać API dropboxa, za dużo zachodu... tongue.gif

@zegarek84 Dzięki za wskazówki, okazało się, że nie ustawiłem nagłówków i serwer przez to nie chciał odpowiedzieć. Wszystko już działa. Dziękuję za pomoc !
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.