Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FancyUpload - как устроен, уюбопытству человека нет предела 
:(
    Опции темы
taral
Дата 5.1.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Всем доброго времени суток!
До недавнего времени я был увене что узнать процент загрузки файла на сервер средствами javaScript-ajax-PHP невозможно.
Думал я так пока не увидел FancyUpload (http://digitarald.de/project/fancyupload/)
Меня очень заинтересовал механизм работы скрипта. Каким образом можно узнавать процент загрузки файла.
Отправлять файл без перезагрузки страницы нельзя же. Хотя не совсем. Видел я библиотеку Котерова JsHttpRequest (http://dklab.ru/lib/JsHttpRequest/)
Которая загружала так файл. Еще кажется в jQuery есть такая возможность.
Кстати каким образом они это делают? Ведь пртокол http не позволяет держать постоянную связь с сервером  smile 
Спасибо за внимание. Надеюсь на ответы=)
PM MAIL   Вверх
theworldcreator
Дата 5.1.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Цитата

До недавнего времени я был увене что узнать процент загрузки файла на сервер средствами javaScript-ajax-PHP невозможно.

Не знаю как это на самом деле реализуется(в смысле не "вызовите воот эту функцию", а как это реально работает на этой связке), но протокол TCP/IP, на котором работает подавляющее большинство серверов, позволяет узнать какая часть данных уже дошла до получателя.
Цитата

Отправлять файл без перезагрузки страницы нельзя же.

А кто только что говорил об AJAX?
Цитата

Кстати каким образом они это делают? Ведь пртокол http не позволяет держать постоянную связь с сервером 

А вы считаете что у компьютера хватает оперативной памяти на хранение только одной страницы? Или почему вы тогда думаете что для отправки/получения данных нужно обязательно стереть кусочек данных формата HTML на вашем компьютере?
PM MAIL WWW ICQ   Вверх
taral
Дата 5.1.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Цитата

А кто только что говорил об AJAX?

С помощью AJAX отправлять файлы на сервер определенно нельзя.
Давайте не будем играть в игру поймай меня за язык?
Обычно отправка файла "без перезагрузки страницы" осуществляется с помощью фреймов. Потому там происходит обычная перезагрузка страницы.
На коком принципе библиотека Котерова основана я не знаю. Возможно тоже с помощью фреймов.
Цитата

А вы считаете что у компьютера хватает оперативной памяти на хранение только одной страницы? Или почему вы тогда думаете что для отправки/получения данных нужно обязательно стереть кусочек данных формата HTML на вашем компьютере?

Не совсем понял Вас. Я уверен что вы не думаете: пока страница открыта в браузере есть соединение с сервером. Потому могу сделать только один вывод. Я вам чем то не угодил и вы пытаетесь выловить из моего сообщения любые неувязочки что бы меня "опустить".

P.S. Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.
PM MAIL   Вверх
theworldcreator
Дата 5.1.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



То-ли вам не хватает каких то базовых знаний, то-ли мы недопонимаем друг друга по другой причине.
Вы когда нибудь рассматривали HTTP запрос/ответ(если рассматривали, дальше можете не читать)?
Вначале заголовки - служебные данные в определенном формате, потом два символа перевода строки и данные которые интересуют принимающею сторону. Это может быть что угодно, можно сказать что компьютер формирует HTTP-валидный файл и отсылает его принимающей стороне.
Когда вы скачиваете страницу она сохраняется где то на компьютере и выводится на экран. Браузеру все равно когда посылать запрос/принимать ответ, до, после или во время загрузки какой то определенной страницы(единственное ограничение - правила написанные разработчиком браузера, призванные обезопасить пользователя). Есть возможность через JavaScript попросить браузер сформировать запрос, как вы говорите, "без перезагрузки страницы", то-есть в произвольный момент времени по желанию разработчика сайта, а не пользователя, как это бывает обычно. МБ некий конкретный браузер и запрещает заполнение тела HTTP запроса посылаемого с подачи JavaScript нетекстовыми данными, но протокол HTTP не только это не запрещает, это часть его постоянной "работы".

Я, конечно, могу и ошибаться, но всегда считал именно так и пара тестов, проведенных во время написания этого сообщения, мои знания подтверждают(хотя и не совсем однозначно)  smile 

Если вам интересно напишите программку в пять строк которая будет подключаться через сокеты к удаленному серверу HTTP и выводить на экран ответ сервера и скачайте через нее что-нибудь, например mp3-файл. Или можно поставить плагин к браузеру позволяющий просматривать входящие/исходящие запросы. Если поставите заодно посмотрите что происходит когда вы файл на сервер отправляете через обычную форму. Советую попробовать отправить и текстовый и "двоичный"(в кавычках так как все они двоичные)).

Это сообщение отредактировал(а) theworldcreator - 5.1.2009, 23:51
PM MAIL WWW ICQ   Вверх
ksnk
Дата 5.1.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата

протокол TCP/IP, на котором работает подавляющее большинство серверов, позволяет узнать какая часть данных уже дошла до получателя

Каким местом можно подключится к протоколу TCP, находясь в JavaScript машине на стороне клиента? при чем он тут вообще?

Цитата

С помощью AJAX отправлять файлы на сервер определенно нельзя.

Цитата с Wiki
Цитата

AJAX — это не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:

  • использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например:

    • с использованием XMLHttpRequest (основной метод);
    • через динамическое создание дочерних фреймов;
    • через динамическое создание тега <script>.

  • использование DHTML для динамического изменения содержания страницы;



C помощью "динамического создания фреймов" передавать файлы можно, а Wiki утверждает, что это таки Ajax...

Ajax - это вообще говоря способ открыть еще несколько страниц, показывая одну. Как это делается - фреймами, HtmlRequest'ом или еще как - не принципиально...




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
solenko
Дата 5.1.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



taral, ответ на ваш вопрос находится в feature list все той же билиотеки
Цитата

Platform and server independent, just needs Flash 9+


Добавлено через 3 минуты и 52 секунды
Цитата(theworldcreator @  5.1.2009,  22:49 Найти цитируемый пост)
МБ некий конкретный браузер и запрещает заполнение тела HTTP запроса посылаемого с подачи JavaScript нетекстовыми данными,

Попробуете найти браузер, который разрешает это сделать? Ну или хотя ьы добратся до контента файла выбранного пользователем в поле file?


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
theworldcreator
Дата 5.1.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Цитата

Каким местом можно подключится к протоколу TCP, находясь в JavaScript машине на стороне клиента? при чем он тут вообще?

Вопрос был "как это работает". Работает это именно через этот протокол. Да и потом вот полная фраза:
Цитата

До недавнего времени я был увене что узнать процент загрузки файла на сервер средствами javaScript-ajax-PHP невозможно.

Средствами PHP проконтролировать точно можно, а используется он и там и там.
Цитата

Ajax - это вообще говоря способ открыть еще несколько страниц, показывая одну. Как это делается - фреймами, HtmlRequest'ом или еще как - не принципиально...

Поддерживаю. Только не "несколько страниц", ибо слово "страница" привязывает нас к чему то конкретному, ajax - способ открыть несколько TCP соединений прозрачно от пользователя, так точнее будет.
PM MAIL WWW ICQ   Вверх
solenko
Дата 6.1.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(theworldcreator @  5.1.2009,  22:58 Найти цитируемый пост)
Вопрос был "как это работает". Работает это именно через этот протокол. Да и потом вот полная фраза:

А о UDP и иже с ними будем рассуждать?
Цитата(theworldcreator @  5.1.2009,  22:58 Найти цитируемый пост)
Средствами PHP проконтролировать точно можно, а используется он и там и там.

Подскажите способ для стандарной сборки php


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
theworldcreator
Дата 6.1.2009, 00:02 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Цитата

Попробуете найти браузер, который разрешает это сделать? Ну или хотя ьы добратся до контента файла выбранного пользователем в поле file?

Ну блин, простите, я вообще в JavaScript и что ему там позволяет браузер не особо сведущ, а то что гипотетически это возможно не нарушая стандартов JavaScript и HTTP я уверен. А браузер с такой функцией и самому написать можноsmile
PM MAIL WWW ICQ   Вверх
theworldcreator
Дата 6.1.2009, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Цитата

А о UDP и иже с ними будем рассуждать?

Нет, UDP существует прозрачно от браузера, браузер видя просьбу JS послать запрос инициализирует именно TCP соединение.
Цитата

Подскажите способ для стандарной сборки php 

Способ создать сокетов и контролирования их работы? Я уверен вы его знаете. А если вы про способ управлять сокетами создаваемыми сервером, то его разумеется не существует(в стандартной конфигурации). Но ведь мы говорим о мониторинге закачки файла средствами PHP, а не сервера, следовательно нас интересует именно создание сокетов PHP скриптом.
PM MAIL WWW ICQ   Вверх
ksnk
Дата 6.1.2009, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата

Подскажите способ для стандарной сборки php 

PHP 5.2 с включенным extension'ом - uploadprogress. Это стандартная сборка или нет? Imho, нет, но вот вдруг... С ней можно заюзать функцию uploadprogress_get_info

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

Можно просто повесить юзеру анимированый гиф с прогрессбаром и пусть он сам думает про нас что хочет...

Может есть еще варианты?

P.S.
для себя я все больше склоняюсь к использованию флеш-загрузчика файлов в админке... Все-таки, возможность отметить каталог и загрузить его весь - на JS не эмулируется палюбому smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
taral
Дата 6.1.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Цитата

через динамическое создание дочерних фреймов;

Вот это я не знал. И когда говорил что 
Цитата

С помощью AJAX отправлять файлы на сервер определенно нельзя.

И я имел в виду XMLHttpRequest (поскольку считал что AJAX ограничевается этой технологией)
Цитата

Есть возможность через JavaScript попросить браузер сформировать запрос, как вы говорите, "без перезагрузки страницы", то-есть в произвольный момент времени по желанию разработчика сайта, а не пользователя, как это бывает обычно.

Мы определенно недопонимаем друг друга.
Под фразой "http не позволяет держать постоянную связь с сервером" я имел в виду что в протоколе http обмен идёт по схеме запрос-ответ.
Цитата

Средствами PHP проконтролировать точно можно, а используется он и там и там.

Если имели в виду узнать процент загрузки файла. То я был бы очень признателен если бы вы сообщили как это сделать. Ведь тогда можно осуществить загрузку файла с шкалой процента.
Через фрейм отправляем файл на сервер. Потом через ajax периодически делаем запросы на сервер. Определяем с помощью PHP процент загруженного файла (я всегда думал что это невозможно, хотя и сейчас так думаю=) ) и возвращаем результат на клиент с процентом.
Было бы здорово!
Цитата

Platform and server independent, just needs Flash 9+

Моя оплошность. Эта библиотека и правда использует Flash. Я обычно проверяю флеш это или нет кликом правой кнопки на той области.
А тут флеш работает как бы за кулисами=)
PM MAIL   Вверх
solenko
Дата 6.1.2009, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(theworldcreator @  5.1.2009,  23:02 Найти цитируемый пост)
Ну блин, простите, я вообще в JavaScript и что ему там позволяет браузер не особо сведущ, а то что гипотетически это возможно не нарушая стандартов JavaScript и HTTP я уверен. А браузер с такой функцией и самому написать можно

Вы не поверите, но в ECMA вообще нет ни слова ни о html ни о файлах. Так что да, его стандарты нарушить не получится )

а на 
Цитата(solenko @  5.1.2009,  23:01 Найти цитируемый пост)
Цитата(theworldcreator @  5.1.2009,  22:58 )Средствами PHP проконтролировать точно можно, а используется он и там и там.Подскажите способ для стандарной сборки php

отвечать будете, или это тоже возможно только гипотетически? )

Добавлено через 4 минуты и 11 секунд
Цитата(ksnk @  5.1.2009,  23:25 Найти цитируемый пост)
При некотором везении и зная место, куда складируются недозагруженные файлы, можно мониторить появление новых файлов в каталоге, почитывать их размер и докладывать клиенту.

В своей личной классификации я это отношу к мифическим методам ) Как узнать какой файл какой пользователь загружает?
Цитата(ksnk @  5.1.2009,  23:25 Найти цитируемый пост)
Можно просто повесить юзеру анимированый гиф с прогрессбаром и пусть он сам думает про нас что хочет...

Для меня -- идеальный вариант для большинства приложений. Если грузятся большие файлы, то есть смысл заморачиватся с флешовым. Ну а если нет, то вполне достаточно и этого

Добавлено через 5 минут и 24 секунды
Цитата(taral @  5.1.2009,  23:27 Найти цитируемый пост)
Моя оплошность. Эта библиотека и правда использует Flash. Я обычно проверяю флеш это или нет кликом правой кнопки на той области.А тут флеш работает как бы за кулисами=)

А это довольно таки распространенный прием. Флешка делается невидимой и реализует то, чего не хватает js. Аудиоплееры, например, так делают


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
taral
Дата 6.1.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Цитата

для себя я все больше склоняюсь к использованию флеш-загрузчика файлов в админке... Все-таки, возможность отметить каталог и загрузить его весь - на JS не эмулируется палюбому

Я бы тоже начал использовать Flash. Но есть проблема. Я вообще не знаю как с ним работать. И никогда с ним не сталкивался при разработках.
Я думаю что загрузка файла на сервер через Flash достаточно простая. Вы не знаете готовых Flash  загрузчиков без интерфейса (как FancyUpload) что бы я смог использовать их при работе?
Идеальным для меня вариантом был бы такой.
Пользователь отправляет файл. Flash загрузчик периодически передает мне в js процент загрузки.

Это сообщение отредактировал(а) taral - 6.1.2009, 00:47
PM MAIL   Вверх
ksnk
Дата 6.1.2009, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Я пока только склоняюсь smile Тоже бы мнения послушал...
ну а тот-же fancyupload уже чем-то не устраивает? Они все, imho, отличаются только внешним видом. Начинка у них примерно одинаковая. А у этого, в добавок еще и исходником можно разжиться...

Это сообщение отредактировал(а) ksnk - 6.1.2009, 00:50


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1078 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.