Суббота, 20.06.2026, 04:38
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

Определение размера удаленного файла
При определении размера удаленного файла большое значение имеет, то, какой потенциальный объем имеет файл.

Можно выделить следующие задачи определения размера удаленного файла:

1. Определение размера небольшого удаленного файла (html, php и т.п.)
2. Определение размера большого удаленного файла (zip, rar, mp3 и т.п.)

Определение размера небольшого удаленного файла


<?php

$filename
= "http://www.webobzor.net/index.php";
$fh = fopen($filename, "r");
while((
$str = fread($fh, 1024)) != null) $fsize += strlen($str);

echo
"Размер файла: ".$fsize;

?>


Открываем файл $filename, читаем с него данные fread по 1024 байта, до тех пор, пока эти данные не равны нулю (null). Одновременно определяем длину полученных данных strlen и их сумму $fsize.


Определение размера большого удаленного файла

Как вы уже догадались, метод, описанный выше не подходит для больших файлов, так как при этом что бы получить размер файла его необходимо было бы полностью прочитать, а это равнозначно его скачиванию на локальный компьютер. Поэтому для удаленных файлов, имеющий большой размер, используется другой подход, основанный на чтении мета тегов:


<?php

function fsize($path)
{
$fp = fopen($path,"r");
$inf = stream_get_meta_data($fp);
fclose($fp);
foreach(
$inf["wrapper_data"] as $v)
if (
stristr($v,"content-length"))
{
$v = explode(":",$v);
return
trim($v[1]);
}
}

$filesize = "http://www.res.goldpages.com.ru/downloads/icons/karbon.zip";
echo
fsize($filesize);

?>


В данной ситуации читаются данные не файла, а мета тегов, которые возвращаются при его открытии. При этом функция stream_get_meta_data возвращает массив данных, в котором содержатся сведения о файле, в том числе значение размера файла:


HTTP/1.1 200 OK
Date
: Fri, 20 Oct 2006 09:31:16 GMT
Server
: Apache/1.3.37 (Unix) FrontPage/5.0.2.2623 PHP/4.4.4 with Suhosin-Patch mod_ssl/2.8.28 OpenSSL/0.9.7d-p1
Last
-Modified: Thu, 12 Oct 2006 15:07:41 GMT
ETag
: "61a0dc-54779-452e5a3d"
Accept-Ranges: bytes
Content
-Length: 345977
Connection
: close


Остается лишь найти тег Content-Length (размер файла) и считать данные из строки.

Источник: http://www.art.webobzor.net/
Категория: php | Добавил: freeone (03.06.2007)
Просмотров: 645 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006