![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Как осуществить такую штуку.
Пользователь выбирает файл и жмет залить. В бразере появляется шкала. От 0 до 100% которая отображает сколько залилось. У меня есть такая идея. Через javascript посылаю динамически запросы на сервер (через java библиотеку). Там PHP определяю размер и отсылаю цифру назад. Что думаете. Возможно так сделать? И какие советы для осуществеления. |
|||
|
||||
| Silent_s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 2.12.2007 Где: Москва Репутация: нет Всего: 0 |
Да тоже об этом думал, а ты знаешь как сделать что бы хотяб просто через форму можно было залить файлы на сервак?
--------------------
Мой блог |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
||||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Думаю, невозможно. Протокол HTTP это не флешки и не ICQ. Отличие в том, первые работают при прямом соединение с сервером по протоколу TCP/IP, а браузеры по HTTP. Это протокол высокого(не помню, какой там правильный термин) уровня - мы не можем следить за передачей байтов, мы можем просто впихнуть информацию в запрос и послать этот запрос. Все.
Теперь соотвественно если подумать, как можно построить индикатор загрузки - только если делить файл на куски (скажем по 100 кб) и отправлять эти куски отдельными запросами. Мало того, что это геморой, это вообще невозможно из-за политики браузеров (если бы браузеры могли читать пользовательские файлы по требованию скриптов, то представьте, что было бы). Единственный вариант вижу - использование флешек. Они это осуществить потенциально могут, т.к. могут работают как программы с постоянным соединением по TCP/IP, но наверняка и у флешей есть ограничения в плане безопасности. Это сообщение отредактировал(а) flashaa - 7.2.2008, 17:17 |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Ну просто заливать через ajax можно. Я заливал. Я думал так. Когда файл зачинает заливатся он временно создается в папке сервера. И чем больше его залило тем больше он места занимает. Я думал так. Начинаю залив, потом просто проверяю динамически его размер. |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Да, кстати для открытия постоянного соединения по TCP потребуется не хостинг , а сервер.
Есть всякие приемы по удержанию http-соединений (эмуляция постоянного соединения), но мне кажется все это никому не нужно . (в данном случае) Добавлено через 11 минут и 17 секунд то, что просто заливать можно это понятно. Через AJAX. Порции файла вы отмерить не сможете. А по поводу того, каков размер файла на сервере - так может быть сервер и будет видеть все градации размера файла (хотя сомневаюсь), он вам ответ не даст раньше того, как получит ЦЕЛИКОМ ВАШ ЗАПРОС. Это опять-таки из-за ограничений HTTP. Это сообщение отредактировал(а) flashaa - 7.2.2008, 17:31 |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Ясно. Вот в этом моменте я и сомневался. Жаль( Есть варианты как решить? Может есть готовая флеш форма? Я в флеше не разбераюсь( Может какой-то урезанный вариант на ajax |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
По поводу заливки файла через AJAX.
Как я сказал выше, у браузеров есть опреденные ограничения по безопасности - нельзя читать пользовательские файлы ниоткуда, кроме как из поля input type=file. Причем это поле может быть только выбрано пользователем (никаких скриптовых установок и дефолтных значений). А что есть AJAX - это вы с помощью JS собираете запрос, потом передаете его объекту XmlHttpRequest или его аналогу, а тот в свою очередь отправляет этот запрос серверу в фоновом режиме. В случае с файлом, вы не можете считать содержимое файла и поместить его в запрос.. Поэтому AJAX в прямом смысле этого слова (через использование XmlHttpRequest) в этом случае бессилен. А происходит вот что: JS в текущем документе создает элемент IFRAME и там создает аналогичную форму (с полем file, которое указал пользователь), затем отправляет ее (submit). Во фрейм загружается ответ сервера, текущее окно не тронуто - этим приемом создается ощущение параллельности, присущее AJAX'у, но это не AJAX. Просто захотелось поумничать ) Taral а что если оставить эту потребность? Даже супер-пупер крутые сайты не утруждают себя реализацией этого. Ведь есть куча других задач. Это сообщение отредактировал(а) flashaa - 7.2.2008, 18:00 |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
||||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
На рапиде на сколько я знаю PL. А реализовано помойму через iframe oO Мой пост видимо совсем все таки не в тему) Это сообщение отредактировал(а) gta4kv - 7.2.2008, 20:31 |
|||
|
||||
| solenko |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
flashaa, ну давайте уж и я поумничаю )
неа. просто форме указываем как target скрытый фрейм и отправляем текущую форму туда. taral, вроде как готовое решение вашей идеи с проверкой размера файла.
Исходники не смотрел, но слабо представляю как это будет работать при загрузке файлов несколькими пользователями. Если получится прикрутить -- отпишитесь о успехе, плиз. Ну и еще, насколько я знаю, APC позволяет такое сделать Добавлено через 2 минуты и 17 секунд
http://www.masrizal.com/index.cfm?fuseacti...php_flashupload -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||||
|
|||||||
| flashaa |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Solenko, если заработает, то респект. Но как-то ненадежно выглядит.
Да, похоже, что так. Реализация этого из библиотеки JsHttpRequest :
Это сообщение отредактировал(а) flashaa - 7.2.2008, 21:51 |
||||
|
|||||
| Smith |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.1.2007 Репутация: 1 Всего: 2 |
http://pecl.php.net/package/uploadprogress
Добавлено через 1 минуту и 32 секунды http://ajaxian.com/archives/asynchronous-f...ress-bar-in-php |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Огромное спасибо всем!
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |