Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie plików i informacji o nich
koneser69
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.11.2008

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


Witam

Mam taki problem za pomocą polecenia
  1. exec("wget $url")

pobieram pliki na mój serwer.

Jak sprawdzić przed pobraniem jaki rozmiar ma ten plik, i jaką nazwę(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cycofiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Oczywiście trzeba pobrać nagłówki.
Nie wszystkie strony/aplikacje/serwery tolerują żądanie HEAD, a takie jest wysyłane przy ustawieniu CURLOPT_NOBODY.
Można wykorzystać jednak fsockopen, znalazłem przykładową funkcję:

  1. function HTTP_Get_Header( $url ) {
  2.  
  3. $get_timeout = 40;
  4. $s_Complete = parse_url($url);
  5.  
  6. if( !isset($s_Complete["scheme"] ) )
  7. {
  8. $s_Complete["host"] = $s_Complete["path"];
  9. $s_Complete["path"] = '';
  10. }
  11.  
  12. $s_Host = $s_Complete["host"];
  13. if( @$s_Complete["path"] == "" )
  14. $s_Complete["path"] = "/?";
  15.  
  16. $s_URI = $s_Complete["path"];
  17.  
  18. if( @$s_Complete["query"] != "" )
  19. $s_URI .= '?'.$s_Complete['query'];
  20.  
  21. if( @$s_Complete["port"] != "" )
  22. $s_Port = $s_Complete["port"];
  23. else
  24. $s_Port = 80;
  25.  
  26. $request = "GET $s_URI HTTP/1.0\r\n";
  27. $request .= "Accept: */*\r\n";
  28. $request .= "Cache-Control: no-cache\r\n";
  29. $request .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008090514 Firefox/3.0.2\r\n";
  30. $request .= "Host: $s_Host\r\n";
  31. $request .= "Connection: Close\r\n";
  32. $request .= "\r\n";
  33.  
  34. $fp = @fsockopen( $s_Host, $s_Port, $errno, $errstr, 30 );
  35. if( is_resource($fp) )
  36. {
  37. fputs( $fp, $request );
  38. $query_timeout = 30;
  39. stream_set_blocking( $fp, true );
  40. stream_set_timeout( $fp, $query_timeout );
  41. $loop_time = time();
  42. $status = socket_get_status( $fp );
  43. $line = "";
  44. $header = "";
  45.  
  46. while( !($line == "\r\n") && !feof($fp) && !$status['timed_out'] )
  47. {
  48. $line = fgets($fp, 4096);
  49. $header .= $line;
  50. $diff = time() - $loop_time;
  51. if( $diff > $get_timeout )
  52. break;
  53. break;
  54. $status = socket_get_status( $fp );
  55. }
  56. fclose( $fp );
  57. return $header;
  58. }
  59. return false;
  60. }



Przykład wywołania:

  1. echo HTTP_Get_Header('http://rs1l3.rapidshare.com/files/407970280/RapidShareManager2WindowsSetup.exe');



Z wyciągnięciem potrzebnych danych myślę że już sobie poradzisz
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 12:29