Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie wielkości pobieranego pliku przed pobraniem
Forum PHP.pl > Forum > PHP
rufus1987
witam

mam pytanie odnośnie pobrania wielkości pliku za pomocą curl przed pobraniem pliku. Chodzi tutaj o plik z rapidshare aby przed jego pobraniem skrypt sprawdził mi jego wielkość która potem muszę wrzucić do "ifa".
Oto skrypt jaki mam:
  1. $url=$link[$a];//tutaj link pobierany z tablicy
  2.  
  3. //logowanie się do rpaidshare
  4. $curl = curl_init('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi');
  5. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
  6. curl_setopt($curl, CURLOPT_HEADER, 0);
  7. curl_setopt($curl, CURLOPT_POST, true);
  8. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  9. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  10. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  11. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
  12. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
  13. curl_setopt($curl, CURLOPT_POSTFIELDS, "login=d....f&password=q.....q");
  14. // curl_setopt($curl, CURLOPT_URL, 'https://ssl.rapidshare.com/premiumzone.html');
  15. $xxx = curl_exec($curl);
  16.  
  17. curl_close($curl);
  18.  
  19. $curl = curl_init("$url");
  20. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  21. curl_setopt($curl, CURLOPT_HEADER, 0);
  22. curl_setopt($curl, CURLOPT_POST, true);
  23. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  24. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  25. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  26. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
  27. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
  28. curl_setopt($curl, CURLOPT_POSTFIELDS, "login=login&password=haslo");
  29.  
  30. $xxx = curl_exec($curl);
  31. curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
  32. curl_setopt($curl, CURLOPT_URL, $link[$i]);
  33. $xxx=curl_exec($curl);
  34.  
  35. $info = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
  36. curl_close($curl);
  37.  
  38. echo "wielkość pliku to $info";

I taki skrypt działa lecz jedno co mnie zastanawia to to że jeśli przykładowo sprawdzany plik ma 3MB skrypt wykonuje się szybko a jeśli ma 200MB wykonuje się bardzo długo i wywala błąd że ma zbyt mało pamięci, i teraz moje pytanie czy żeby pobrał nagłówek z wielkośćią pliku skrypt sobie cacheuje plik czyli go sobie pobiera 3MB lub 200MB stąd błąd pamięci przy dużym pliku czy może pobiera sam nagłówek czyli kilka kB i z niego te dane odczytuje.
Jeśli gdzieś robię błąd i pobieram plik a nie sam nagłówek proszę o pomoc.
emtiej
da się w JS chyba na fotosik.pl przed wgraniem zdjęcia już widać ile waży, ale nie powiem ci w 100%... poszukaj w googlach może pod frazą "file upload in javascript" albo coś w podobie
rufus1987
już sobie poradziłem, jak by ktoś potrzebował wklejam kod:
  1. $curl = curl_init('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi');
  2. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
  3. curl_setopt($curl, CURLOPT_HEADER, 0);
  4. curl_setopt($curl, CURLOPT_POST, true);
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  6. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  7. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  8. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
  9. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
  10. curl_setopt($curl, CURLOPT_POSTFIELDS, "login=asd&password=asd");
  11. $xxx = curl_exec($curl);
  12.  
  13. curl_close($curl);
  14.  
  15. $curl = curl_init($url);
  16. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  17. curl_setopt($curl, CURLOPT_HEADER, 1);
  18. curl_setopt($curl, CURLOPT_NOBODY, 1);
  19. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
  20. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
  21. $xxx = curl_exec($curl);
  22. $info = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
  23. curl_close($curl);
  24. echo "ilosc danych to $info bajtów lub ".$info/(1024*1024)." MB";
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.