Загрузка файла - progress bar @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 19 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: Загрузка файла - progress bar
Сообщение Добавлено: 26 Июль 2006, 03:52:13 
Как сделать что бы при загрузке файла - показывало прогресс бар.
Нашел в интернете кучу примеров - но хочется самому разобраться, а не использовать модули.

Я так понял что PHP + JavaScript мне не помогут (даже если делать AJAX).
Проблема в том, что нельзя узнать размер файла - еще до того как он загрузился на сервер.

Узнать размер файла можно с помощью ActiveX - это не подходит, потому что броузер будет ругаться.

Второй вариант - использовать PERL.
Но я еще не уверен, может ли PERL такое?


Второй мой вопрос (риторический).
С Перлом я еще ни разу не работал. Работаю с PHP в основном.
Знаю что Перл язык побогаче возможностями.
Думаю стоит его изучать как второй язык программирования?
В чем его сильные и слабые стороны (по сравнению с PHP)?

Буду признателен за каждое мнение! :beer:
fStrange Муж.
соучастник
10
Сообщения: 900
Зарегистрирован: 25.07.05
Откуда: Ростов-на-Дону
Сообщение Добавлено: 26 Июль 2006, 07:50:33 

Цитата:
Второй вариант - использовать PERL.
Но я еще не уверен, может ли PERL такое?


не может, серверные языки тут тебе не помогут

Цитата:
Знаю что Перл язык побогаче возможностями.


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

_________________
Записки мобильного веб разработчика
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 26 Июль 2006, 08:18:40 
видел примеры, погуглите, вот первый

http://ajaxian.com/archives/file-upload … erl-script

_________________
:: metal kick ass ::
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 26 Июль 2006, 08:19:27 
А как тогда делается тут? - Mega Upload
Вроде говорят что сделано на Перле.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 26 Июль 2006, 10:57:14 
AlexShop, ну и? Там все написано, даже скачать дают

_________________
:: metal kick ass ::
Infinite Муж.
участник
15
Сообщения: 1219
Зарегистрирован: 02.02.05
Сообщение Добавлено: 26 Июль 2006, 21:29:52 
AlexShop, Ajax, кстати, тут очень даже неплохо бы справился! Только вот умельцев мало...

А мой совет лично вам - лучше продолжайте изучать PHP, не разбрасывая усилия.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 27 Июль 2006, 02:39:44 

Infinite писал(а):
AlexShop, Ajax, кстати, тут очень даже неплохо бы справился!



А мне кажется что нет.

Согласен, что когда файл загружается - на сервере создается временный файл.
Директория для временных файлов прописана в php.ini
Ajax'ом можно проверять через промежутки времени размер временного файла (как он растет).
Таким образом можно узнать сколько закачалось.

НО: неизвестно сколько еще осталось качать.

Что бы узнать размер файла на компьютере клиента (до закачки) - нужно иметь доступ к файлу. JavaScript не имеет этого доступа.

PERL умеет определять размер файла - так как имеет доступ к "RAW_POST_DATA". ПХП еще этого делать не умеет.

Еще альтернатива - это Java

Так что думаю может лучше Явой заняться, а не Перлом.
(вообще то по этому поводу лучше новую тему открыть)
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 28 Июль 2006, 12:32:45 
AlexShop, бред только не надо нести.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 29 Июль 2006, 02:17:03 

Long писал(а):
AlexShop, бред только не надо нести.


Long, где я ошибся?
diezel2005 Муж.
новый человек
16
Сообщения: 140
Зарегистрирован: 12.08.06
Откуда: Украина
Сообщение Добавлено: 12 Август 2006, 12:33:21 
AlexShop
Ты абсолютно прав во всем. Есть несколько способов реализации подобных решений, одно из них на чистом ПХП.
1. Perl+Ajax: Параметры для закачки передаются в скрипт на Perl и он сам их обрабатывает, складывая процесс закачки в заранее известный для Ajax каталог. Как пример: http://share2net.com/.
2. Perl+PHP: все так же, как и в №1, только используется команда PHP - flush для обновления прогресс-бара. Пример: http://www.hotfileshare.com/
3. PHP: Для этого решения надо патчить ядро PHP патчем http://pdoru.from.ro/upload-progress-meter/ который и даст доступ к RAW data. После этого просто можно использовать функцию upload_progress_meter_get_info для получения информации о закачке.
К Java не прикасался, поскольку сама платформа накладывает определенные ограничения на клиента, а вот на Флеш тоже есть готовые решения.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 20 Январь 2007, 22:17:28 
В MegaUpload товарищ пишет что:
"Strangely enough PHP does have a variable named RAW_POST_DATA but this is populated only if the engine cannot identify the content type of the POST data."

Когда в php.ini есть директива always_populate_raw_post_data, которая:
"Always populate the $HTTP_RAW_POST_DATA containing the raw POST data. Otherwise, the variable is populated only with unrecognized MIME type of the data."

Я думаю не об одном и том же ли они говорят?
Попробую покопать в этом направлении. Может PHP не придется патчить?

P.S.
и тут же разочарование:
$HTTP_RAW_POST_DATA is not available with enctype="multipart/form-data"

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
gro
новый человек
17
Сообщения: 43
Зарегистрирован: 09.09.06
Сообщение Добавлено: 20 Январь 2007, 23:06:49 
Для php, собранного, как модуль через getAllHeader() можно вытащить content-length, который будет содержать размер тела запроса. Тело запроса это сам файл + немного дополнительной инфы (несколько сотен байт). Для отображения прогресса больших файлов этими несколькими сотнями байт можно пренебречь.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 21 Январь 2007, 07:40:20 
Как вариант решения: http://deforum.ru/forum/viewtopic.php?t=50069
1NV1Z0R
соучастник
12
Сообщения: 971
Зарегистрирован: 27.09.05
Сообщение Добавлено: 21 Январь 2007, 13:55:38 
насчет флеша - есть же готовые вещи подобные, mootools'овый Swiff.Upload и подобные.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 21 Январь 2007, 14:27:32 
Да есть, натыкался на это: http://labb.dev.mammon.se/swfupload/
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 21 Январь 2007, 18:55:32 
@st@l@vist@, Да на флеше подобных вещей есть.

gro, у меня почему то не работает.
На первой странице я отправляю форму
на другой делаю $a=getAllHeader(); print_r($a);

content-length выдает почти один размер (независимо от файла).
Что я не так делаю?

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
diezel2005 Муж.
новый человек
16
Сообщения: 140
Зарегистрирован: 12.08.06
Откуда: Украина
Сообщение Добавлено: 21 Январь 2007, 19:23:36 
AlexShop,
А чем тебе не нравиться индикатор процесса на Perl? Может сессии теряются? я сейчас пробую клонировать один движок вот тут http://www.storethefiles.com/ и скажу тебе - связка Perl+PHP работает на ура даже с сессиями. Там, где сессии через куки не перенести, переношу явно через урл.
@st@l@vist@,
за ссылку спасибо.

_________________
Не можешь вынести хамства? Сосчитай до десяти и вынеси хама.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 21 Май 2008, 02:53:10 
Поднимаю старую тему.

С появлением версии PHP 5.2 (если не ошибаюсь в номере версии) - появилась возможность сделать самый настоящий Progress Bar!!

Правда для этого вам надо установить Alternative PHP Cache, что скорее подходит для тех у кого свой сервер.

А вот и доки:
http://www.ibm.com/developerworks/libra … index.html

Я проверил - работает на ура!

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
diezel2005 Муж.
новый человек
16
Сообщения: 140
Зарегистрирован: 12.08.06
Откуда: Украина
Сообщение Добавлено: 21 Май 2008, 11:54:41 

AlexShop писал(а):
Я проверил - работает на ура!


Еще два месяца назад я находил пару ошибок в работе АПЦ. Может уже исправили, но попробуй на больших файлах и с двух-трех клиентов одновременно. И еще - ИЕ6 упорно не хотел давать правильный размер.

_________________
Не можешь вынести хамства? Сосчитай до десяти и вынеси хама.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 19 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100