Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/58: Рейтинг темы: голосов - 58, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 17

Определить размер файла по прямой ссылке на удаленном сервере

03.03.2014, 20:44. Показов 12121. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Нуждаюсь в помощи специалистов и знатоков своего дела. Необходимо каким то образом при помощи php или javascript выводить напротив прямой ссылки на файл информацию о размере файла вида: "(36.8 MB)" или "(0.22 MB)".
То есть определить размер файла по прямой ссылке на удаленном сервере.
Могу привести пример, где это реализовано и как мне показалось при помощи js...
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2014, 20:44
Ответы с готовыми решениями:

Как проверить существование файла на удаленном сервере?
Как проверить существование файла на удаленном сервере? конструкция: if (!file_exists('http://www.server.ru/price.zip')) {...}не...

Как узнать размер файла на сервере по прямой http ссылке
В программе должен загружаться 1 компонент, его размер не фиксирован и может меняться по мере обновления. Надо сделать прогрессбар...

Определить размер файла на сервере по имеющейся ссылке
Здравствуйте форумчане Суть задачи - определить размер файла на сервере по имеющейся ссылке WebClient client = new WebClient(); ...

12
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
03.03.2014, 20:49
javascript тут не при делах

обращайтесь на форум PHP, спросите там про file_get_contents
но и средствами PHP вы сможете получить лишь количество символов в коде * 4 байта,
а вот размеры всех и всяческих картинок/фонов/объектов внутри файла получить затруднительно
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 17
04.03.2014, 00:09  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
а вот размеры всех и всяческих картинок/фонов/объектов внутри файла получить затруднительно
Но как то же это делают в примере который покажу не из-за/для любопытства, а тому кто захочет помочь...
(не хочу мусорить чужими ссылками на этом форуме)
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
04.03.2014, 01:04
Цитата Сообщение от djinn2 Посмотреть сообщение
Но как то же это делают в примере который покажу
Вы хотите сказать, что указав ссылку на файл, вам без перезагрузки страницы выводится его размер? Так тут и вашего примера не нужно. Ссылка ajax-запросом отправляется на сервер, там серверным скриптом (тем же php) обрабатывается, вычисляется размер файла (сокеты, curl) и возвращается ответом.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
04.03.2014, 01:15
Lazy_Den, имхо, топикстартер хотел сказать, что где-то он видел страницу, на которой имеется статический список ссылок, напротив каждой из которой указан полный размер файла по ссылке

полагаю, что для этого вряд ли использован ajax-запрос, всё изначально делается на сервере на одном из серверных языков

и я указал топикстартеру, что на серверном языке вполне возможно определить размер самого файла, но, если это HTML-файл, то будет определён только размер собственно файла, а вот размеры подключаемых в этом HTML-файле изображений, CSS и JS-файлов, а также встроенных объектов определить и просуммировать с собственным размером HTML-файла будет нельзя
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 17
04.03.2014, 01:16  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Вы хотите сказать, что указав ссылку на файл, вам без перезагрузки страницы выводится его размер?
Я не утверждаю, не утверждаю и про метод, возможно и ajax, а лишь знаю что через ссылку на файл скрипт получает размер и выводится информация в нужном месте...
Вот посмотрите - это пример - _biblprog точка org точка ua/ru/google_chrome/
Там прямые ссылки на программы... в хеадере скрипт - scripts_ru.js, в нем внизу написано:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var getSize = function(nameInputLink, nameSizeLink){
 
          jQuery.ajax({
              type: 'POST',
              url: location.href,
              dataType: 'html',
              global: false,
              data: ({action : 'getsize', url: jQuery('input:[name="'+nameInputLink+'"]').val()}),
              success : function(data) {
              if(data != ''){
                  jQuery('input:[name="'+nameSizeLink+'"]').val(data +' MB');
              }else{
                  alert('Невозможно получить размер. Проверьте ссылку');
              }
 
              }
            });
Что это значит я не знаю... но примерно догадываюсь что это одна из деталей того самого скрипта для определения размера..
Мне просто нужен такой скрипт и способ его применения, спрашиваю лишь потому что сам написать его не способен...
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
04.03.2014, 01:30
Цитата Сообщение от djinn2 Посмотреть сообщение
Что это значит я не знаю...
То, о чем я и говорил. Именно эта часть - это скрипт ajax-запроса. Вторая часть "марлезонского балета" - серверная, написанная на php.
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 17
04.03.2014, 01:32  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Именно эта часть - это скрипт ajax-запроса. Вторая часть "марлезонского балета" - серверная, написанная на php.
Спасибо, хоть одно из всего остального выяснилось...
А есть решения первой и второй части того самого "марлезонского балета"?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
04.03.2014, 01:37
первая часть не нужна - указанный вами сайт "ключница делала"
javascript нужен при динамике - если бы ссылки формировались на странице юзером
а для статики всё можно и нужно делать на сервере

а вот вторая часть - серверная
и куда обратиться по этому вопросу, я вам выше уже указывал
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
04.03.2014, 01:37
Цитата Сообщение от djinn2 Посмотреть сообщение
А есть решения первой и второй части того самого "марлезонского балета"?
 Комментарий модератора 
Не отсылайте пользователей в поисковые системы. Самостоятельно найдите решение и разместите его на форуме.
0
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 17
04.03.2014, 01:46  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
и куда обратиться по этому вопросу, я вам выше уже указывал
Я писал модератору этого форума с просьбой о переносе темы....
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Просто завались ))
Я понимаю ваш ответ, но написал на этом форуме свой вопрос лишь потому что не знаю и не умею применять все что можно найти в гугле по этому вопросу.
Мне нужно решение вопроса знающим человеком... вот собственно и потому я тут.
На всякий случай, применять собираюсь на движке DLE.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
04.03.2014, 02:53
В общем, создаете файл с формой или достаточно будет просто текстовое поле, какая-нибудь кнопка и элемент для вывода результата.
HTML5
1
2
3
4
5
<div id="output"></div>
<div>
    <label>File URL: </label><input type="text" id="file_url"><br>
    <button id="mybutton" type="button">Click to See</button>
</div>
В этот файл записываем JS и не забудьте перед этим саму библиотеку jQuery подключить:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(function(){
  $("#mybutton").click(function() {
    var fileUrl = $.trim($("#file_url").val());
    if(fileUrl === '') return false;
      $.ajax({
        url: 'path/to/handler.php', // тут пропишите реальный путь к обработчику (второму файлу)    
        type: 'POST',
        data: {fu: fileUrl},
        cache: false,
        dataType: 'json',
        success: function(data) {
            $('#output').text('Размер файла: ' + data + ' байт');
        }
      });
  });
});
Второй файл, в котором будет обработчик.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(!empty($_POST['fu'])) $fu = $_POST['fu'];
if(isset($fu)){
    echo json_encode(getRemoteFileSize($fu));
    exit;
}
function getRemoteFileSize($url){
    ob_start();
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    $ok = curl_exec($ch);
    curl_close($ch);
    $head = ob_get_contents();
    ob_end_clean();
    $regex = '/Content-Length:\s([0-9].+?)\s/';
    preg_match($regex, $head, $matches);
    return isset($matches[1]) ? $matches[1] : "unknown";
}
Вроде бы даже в песочнице работает. Можете попробовать побаловаться.

Добавлено через 23 минуты
1
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 17
04.03.2014, 15:45  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
В общем, создаете файл
Спасибо вам большое за то что не поленились и помогли! Ценю вашу помощь.

Но все же есть некоторые сложности с выводом:
Размер выводится только по клику, а надо автоматически... и если можно с кешем до изменения ссылки, что бы избежать постоянные запросы при посещении страницы...
Размер определяется так - Размер файла: 285184 байт, а желательно вот так - (36.8 MB).
И важный момент, ссылка вставляется в доп. поле, и выводится именно переменной доп поля вида - [xfvalue_file]

Вот так работает - url: 'http://artkiev.com/blog/wp-content/uploads/2012/12/sreda.zip',
Вот так не работает - url: 'http://[xfvalue_file]';

Спасибо.
Это можно как то решить?
Я ни в коем не наглею, но спосить даже такое элементарное больше негде...

Добавлено через 12 часов 35 минут
Спасибо всем! Реализовано. Можно закрывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2014, 15:45
Помогаю со студенческими работами здесь

Размер файла на удаленном сервере
Добрый день помогите я пытаюсь получить размер файла получаю но проблемма в том что при первом нажатии на кнопку выдает 0 а при 2 уже...

Чтение файла, расположенного на удаленном сервере
Собственно необходим кусок кода, который это делает. Зарание спасибо. П.С: помню, в паскале были проблемы, если текст больше 255...

Закачка файла по прямой ссылке
Всем привет, я не уверен был, где создавать тему, поэтому создал здесь. Мне нужна помощь в разрешении одной проблемы. Я новичок в...

Отдача файла не по прямой ссылке
Здравствуйте! Необходимо отдать файл не по прямой ссылке. Алгоритм, который хочу получить: 1. Пользователь идет по ссылке вида...

403 forbidden для файла по прямой ссылке
Очень прошу помочь советом знатоков ;) По прямой ссылке на любой файл (не картинка) появляется ошибка 403 К пример: ссылка удалена...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru