16.07.2008, 02:37
общий
это ответ
Здравствуйте, Fenixk19!
Как определить размер файла по http адресу?
Размер файла приходит в заголовке ответа сервера:
GET http://www.radiokot.ru/start/mcu_fpga/avr/15/01.gif HTTP/1.0
User-Agent: NOD32 Update (Windows; U; 32bit; VDB 9806; BPC 2.70.39; OS: 5.1.2600 SP 2.0 NT;CH 0.0;LNG RUSSIAN;x32c)
Host: radiokot.ru
Connection: close
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.0 200 OK
Server=nginx/0.5.36
Date=Tue, 15 Jul 2008 22:23:09 GMT
Content-Type=image/gif
<b><font color=red>Content-Length=13403</font></b>
Last-Modified=Thu, 08 Dec 1985 01:29:27 GMT
Accept-Ranges=bytes
X-Cache=MISS from proxy.oreol.net
X-Cache-Lookup=MISS from proxy.oreol.net:3128
Via=1.0 proxy.oreol.net:3128 (squid/2.6.STABLE12)
Connection=keep-alive
proxy-connection=keep-alive
Всегда ли это можно сделать?
Нет. Не все серверы передают в заголовке размер.
В приложении простенький скрипт получения размера.
Приложение:
<?php$QUERY = "HEAD http://www.radiokot.ru/start/mcu_fpga/avr/15/01.gif HTTP/1.0\r\n";$QUERY .= "Host: radiokot.ru\r\n";$QUERY .= "Connection: close\r\n\r\n";$header = "";$fp = fsockopen("radiokot.ru",80,$errno,$errstr,30);fwrite($fp,$QUERY);while(!feof($fp)) $header .= fgets($fp,512);fclose($fp);preg_match("/Content-Length: ([0-9]+)\r\n/i",$header,$matches);$out = (empty($matches[1])) ? "Error" : "Size: ".$matches[1]." b";echo $out;?>