Как узнать размер файла до закачки ?

12
CyberX
На сайте с 08.03.2008
Offline
51
5386

На сайте лежит много ссылок собранных из разных мест. Нужно выводить размер файла (чтобы пользователь мог рассчитывать свой трафик).

Есть прямая ссылка типа http://site/file.zip на каждый из файлов.

Хотелось бы получить такой вид:

Скачать Файл 1 (256 Мегабайт)

Скачать Файл 2 (500 Мегабайт)

Скачать Файл 3 (1000 Мегабайт)

На чем и как можно реализовать. Если есть примеры хотелось бы взглянуть. Заранее спасибо.

Шустрый хостинг (http://www.colocat.ru) за нормальные деньги (Москва). 30 дней тестовый период. Рекомендую копирайтера aronskaya (/ru/users/73753). Отличные авторские тексты.
Segey
На сайте с 23.08.2005
Offline
404
#1

CyberX,

Получить только заголовки, через curl это можно сделать. Если сервер отдаст размер, то все ок :)

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
CyberX
На сайте с 08.03.2008
Offline
51
#2

Segey, а без использования Curl такое возможно ?

Segey
На сайте с 23.08.2005
Offline
404
#3

CyberX,

Можно через соккеты попробовать, читать файл пока не кончатся заголовки, до \n\n и их парсить, на curl удобнее будет:

<?php

$ch = curl_init("http://site/file.zip");
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$head = curl_exec($ch);
curl_close($ch);
?>

Потом в $head найти размер в байтах

arkadiy_a
На сайте с 11.06.2008
Offline
82
#4

Размер файла нужно проставлять на этапе создания/проставления ссылки на страницу (т.е. создания страницы), а иначе каждый раз при выдаче в браузер страница будет опрашивать сервера (курлом или чем угодно) что не есть хорошо.

ТС если у Вас движок сайта есть (кстати почему не пишите подробности?) то нужно перехватывать момент создания и редактирования страницы, и затем курлом, фсокопен или одной из юниксовых команд (если safe_mode=off) опрашивать все файлы по списку. Я бы взял (если движок позволяет. автор не будьте ламерюгой, пишите подробности) какой-то плагин например который превьюшки картинок генерирует, изменил бы его чтобы он перехватывал не картинки в теле страницы а ссылки, "обнюхивал" бы файлы и проставлял размер.

CyberX
На сайте с 08.03.2008
Offline
51
#5

arkadiy_a,

arkadiy_a:
кстати почему не пишите подробности?

А какие вам ещё нужны подробности ? Я разве спрашивал как мне что-то куда-то засунуть ?

Вопрос был по моему достаточно четко сформулирован.

Segey
На сайте с 23.08.2005
Offline
404
#6
CyberX:
Вопрос был по моему достаточно четко сформулирован.

Уже есть четкий ответ: curl, соккеты.

А arkadiy_a вам по делу говорит

arkadiy_a
На сайте с 11.06.2008
Offline
82
#7
CyberX:
arkadiy_a,
Я разве спрашивал как мне что-то куда-то засунуть ?

Вот именно. Засунуть на страницу размер файликов. Т.е. надо изменить страницу? А как страница выводится (движок, голый Html) это знать наверное нужно чтобы правильно Вам помочь с ответом?

CyberX
На сайте с 08.03.2008
Offline
51
#8

Segey, Спасибо, вероятнее всего воспользуюсь вашим решением curl.

arkadiy_a,

CyberX, Нужно выводить размер файла
было сказанно для уточнения. А то тут много любителей задавать вопрос а зачем вам это ? :) (без обид народ)
[Удален]
#9

заголовки можно получить без всякого курла


get_headers("http://url");
arkadiy_a
На сайте с 11.06.2008
Offline
82
#10
neolord:
заголовки можно получить без всякого курла

Вау! PHP пополнился полезной функцией в пятой версии, только сейчас обратил внимание....

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий