Комментарии 98
А что, файл нельзя отправить?
+1
Так, а вот по этому поводу у меня есть следующая статья про, опять же, самописный jQuery плагин, служащий для ajax-upload`а файлов. Пока что анонс — для его работы не требуется Flash, только jquery + php. Если сервер поддерживает функцию uploadprogress_get_info, то включается и progress bar. Если функция отстутсвует в Вашей сборки, прогресс загрузки файла не будет отображаться.
В скором будущем — обязательно напишу о нем.
В скором будущем — обязательно напишу о нем.
+1
Может лучше не flash, а iframe?
+1
Интересно, на многих shared-хотингах поддерживается uploadprogress_get_info? Я, например, про такую функцию первый раз слышу. Ведь вся прелесть данного загрузчика именно в прогресс-баре.
0
uploadprogress обображает прогресс для всех файлов сразу. А решение на flash'е может показать прогресс по каждому файлу и в целом.
0
Нет, не для всех. Ему методом POST передается уникальный идентификатор аплоада, и показывается статистика только по этой загрузке.
0
Updated: загрузчик файлов добавлен )
+3
И правда, как дела с type=«file»?
+1
Не, ну правильно же? Если делать — то до конца!!!
+1
Не забываем про существование замечательного плагин jQuery Form ( jquery.malsup.com/form/ ), который поддерживает асинхронную закачку файлов и прочие вкусности.
+2
Обязательно ознакомлюсь с ним ) Но сразу могу сказать, что uploader там не такой вкусный )
+1
Получение всех данных из формы — $(«id»).serialize()
+3
Да, с этой функцией знаком, но соль в том, что хотелось получать объект, и как-то манипулировать им перед отправкой на сервер.
0
Тоже не так давно писал загрузчик/сабмиттер форм ( bitbucket.org/kmike/gearsuploader/ ), для работы нужен Google Gears (+mootools), если его нет — делается fall-back на обычную отправку форм. Умеет пережимать картинки на клиенте, показывать прогресс-бар при загрузке файла (изменения на серверной части не нужны), в качестве плюшки сделана интеграция с джанговскими формсетами (что позволяет делать массовую загрузку картинок с ресайзом на клиенте, не меняя код на сервере — используя там обычные formset'ы).
Но все пока не супер-продакшн качества. В ИЕ вроде не работает прогресс-бар, нужно смотреть. Кому интересно, можете потестировать. В репозитории есть пример django-проекта, хорошо бы еще php сделать) Тоже хотел про все это написать сюда на хабр с подробными инструкциями и примерами, но руки пока не доходят.
Но все пока не супер-продакшн качества. В ИЕ вроде не работает прогресс-бар, нужно смотреть. Кому интересно, можете потестировать. В репозитории есть пример django-проекта, хорошо бы еще php сделать) Тоже хотел про все это написать сюда на хабр с подробными инструкциями и примерами, но руки пока не доходят.
+1
да, немного документации: bitbucket.org/kmike/gearsuploader/wiki/ru
+1
С ишаком действительно всегда много мороки. Я в своем загрузчике вроде поборол все его реинкарнации )
>>>Умеет пережимать картинки на клиенте
Не подскажете, этот функционал обеспечивается Google Gears, или чем-то другим?
>>>Умеет пережимать картинки на клиенте
Не подскажете, этот функционал обеспечивается Google Gears, или чем-то другим?
0
молодцом, смотрится на 5.
+1
Спасибо большое, именно это я и искал!
+1
В целом мне и обычный плагин форм нравится. У меня к нему свой класс на PHP написан. Сейчас еще со Smarty его пытаюсь подружить.
Но вот загрузчик файлов я себе позаимствую, немного переработав, если вы не против =))
Но вот загрузчик файлов я себе позаимствую, немного переработав, если вы не против =))
0
Для того и выкладывал ) Удачи вам разобраться с немножко сумбурным кодом загрузчика ) Хотя я его сегодня уже причесал немного) Заранее прошу прощения за отсутствие комментариев )
0
Кстати, насчет PHP класса для плагина )
У меня для CodeIgniter написана модель, помогающая работать с данными, полученными посредством этого плагина. Имеются следующие методы:
get — получения данных по условию
set — установить новые значения
exist — проверить, существуют ли переданные в метод ключи в этом массиве
delete — удалить указанные ключи
deleteAllBut — удалить все ключи кроме указанных
sizeOf — количество ключей в указанном подмассиве
strlen — получает список ключей, а так же интервал min и max длины строки (можно каждому ключу задать свой интервал). И возвращает true, если все ключи прошли проверку, иначе — false. Так же если передать еще один флажок, то вернет развернутый отчет — true\false по каждому ключу.
setParams — заменить текущий массив для обработки на новый
У меня для CodeIgniter написана модель, помогающая работать с данными, полученными посредством этого плагина. Имеются следующие методы:
get — получения данных по условию
set — установить новые значения
exist — проверить, существуют ли переданные в метод ключи в этом массиве
delete — удалить указанные ключи
deleteAllBut — удалить все ключи кроме указанных
sizeOf — количество ключей в указанном подмассиве
strlen — получает список ключей, а так же интервал min и max длины строки (можно каждому ключу задать свой интервал). И возвращает true, если все ключи прошли проверку, иначе — false. Так же если передать еще один флажок, то вернет развернутый отчет — true\false по каждому ключу.
setParams — заменить текущий массив для обработки на новый
0
У меня формы завязаны на базу. Сначала описывается сама форма:
Поля, соответствующие таблице могут писаться в базу. В соответствии с ним происходит обработка в JS при вводе информации в фронтэнде и при сохранении в бакенде. отправка происходит через формы JQuery, если включен JS или как обычно, если выключен.
Есть реализация интеграции с Jquery-UI.
Так еще доступны типы int, float, select, radio и некоторые другие.
Сейчас доступны методы:
create() — создание формы (см. выше)
getForm( 'formname' ) — вернет описание формы, как массив выше
clear() — очистит значения value у полей
getPost() — дёрнет из поста соответствующие полям индексы (нужно, когда считывает отправленные данные, этот же метод производит чистку данных по типам)
setTable() — сохранит данные в таблицу БД
getTable() — загрузит данные из таблицы БД
getValue() — получить значение поля
getValues() — получить значения всех полей
setValue() — установить значение поля
setValues() — установить значения всех полей
setVariants() — установить варианты для полей select, radio и checkbox (порой надо, чтобы эти значения заполнялись динамически из базы, например)
write() — распечатает форму в автоматическом режиме (есть несколько вариантов)
setReadonly() — утановить поле в readonly (также может отменить readonly)
setRaedonlyAll() — установить все поля в readonly (также может отменить readonly)
setHidden() — делает некоторые поля скрытыми/не скрытыми
setTypes() — можно для некоторых полей поменять тип
Как-то так.
<?php /** * Форма USERS */ $forms->create('users', array( 'method' => 'post', // метод отправки 'action' => '/ajax/xforms/action_users.php', // скрипт обработки 'class' => 'standart', // CSS класс 'table' => DBUSERS, // таблица БД 'fields' => array( 'id' => array( 'type' => 'hidden' ), 'email' => array( 'type' => 'text', 'label' => 'Email', 'notice' => 'необходим для авторизации' ), 'password' => array( 'type' => 'password', 'label' => 'Пароль', 'notice' => 'только чтобы изменить' ), 'solt' => array( 'type' => 'hidden' ), 'kod' => array( 'type' => 'hidden' ), 'fname' => array( 'type' => 'text', 'label' => 'Фамилия' ), 'lname' => array( 'type' => 'text', 'label' => '* Имя'/*, 'obligatory' => 1*/ ), 'tname' => array( 'type' => 'text', 'label' => 'Отчество' ), 'phone1' => array( 'type' => 'text', 'label' => 'Телефон' ), 'phone2' => array( 'type' => 'text', 'label' => 'Факс' ), 'phone3' => array( 'type' => 'text', 'label' => 'Мобильный' ), 'firm_value' => array( // no DB 'type' => 'suggest', 'label' => '* Фирма', 'ajax' => '/ajax/suggest/sug_users_firms.php', 'field_value' => 'firm', ), 'firm' => array( 'type'=>'hidden' ), 'contr_value' => array( // no DB 'type' => 'suggest', 'label' => 'Контрагент', 'ajax' => '/ajax/suggest/sug_users_contr.php', 'field_value' => 'contractor', ), 'contractor' => array( 'type' => 'hidden' ), 'position' => array( 'type' => 'text', 'label' => 'Должность' ), // должность 'otdel' => array( 'type' => 'text', 'label' => 'Отдел' ), 'other' => array( 'type' => 'textarea', 'label' => 'Дополнительно' ), 'date' => array( 'type' => 'hidden' ), 'last_date' => array( 'type' => 'hidden' ), 'ip' => array( 'type' => 'hidden' ), 'fix_ip' => array( 'type' => 'hidden' ), 'status' => array( 'type' => 'hidden', 'label' => '' ), 'submit' => array( 'type' => 'submit', 'value' => 'Сохранить' ), ), )); ?>
Поля, соответствующие таблице могут писаться в базу. В соответствии с ним происходит обработка в JS при вводе информации в фронтэнде и при сохранении в бакенде. отправка происходит через формы JQuery, если включен JS или как обычно, если выключен.
Есть реализация интеграции с Jquery-UI.
Так еще доступны типы int, float, select, radio и некоторые другие.
Сейчас доступны методы:
create() — создание формы (см. выше)
getForm( 'formname' ) — вернет описание формы, как массив выше
clear() — очистит значения value у полей
getPost() — дёрнет из поста соответствующие полям индексы (нужно, когда считывает отправленные данные, этот же метод производит чистку данных по типам)
setTable() — сохранит данные в таблицу БД
getTable() — загрузит данные из таблицы БД
getValue() — получить значение поля
getValues() — получить значения всех полей
setValue() — установить значение поля
setValues() — установить значения всех полей
setVariants() — установить варианты для полей select, radio и checkbox (порой надо, чтобы эти значения заполнялись динамически из базы, например)
write() — распечатает форму в автоматическом режиме (есть несколько вариантов)
setReadonly() — утановить поле в readonly (также может отменить readonly)
setRaedonlyAll() — установить все поля в readonly (также может отменить readonly)
setHidden() — делает некоторые поля скрытыми/не скрытыми
setTypes() — можно для некоторых полей поменять тип
Как-то так.
0
Из селекта созвращаются только названия полей, а их values нет.
0
У вас много «зашитого» html кода внутри плагина — это не найс (например: «Загрузка началась. Пожалуйста, подождите...», там много такого). Можно все служебные тексты в отдельный json кусочек вынести. Я бы вообще не писал своих текстов а вызывал пользовательские функции, которые бы писали текст, если нужно.
+2
мне вот интересно а как получить скорость передачи файла?
0
размер файла, деленный на процент переданного, деленный на время?
+1
вы написали че-то не то, я знаю как вычисляется скорость, в данном случаи просто кол-во переданной информации деленное на время, скорость не зависит от размера файла.
во-вторых, может я неправильно выразился, но мне было интересно как получить кол-во переданной информации в данный момент
во-вторых, может я неправильно выразился, но мне было интересно как получить кол-во переданной информации в данный момент
0
чуть выше упоминали uploadprogress_get_info, да и в коде серверной части плагина она упоминается:
можно еще поискать аналоги.
function_exists(«uploadprogress_get_info»)
можно еще поискать аналоги.
+1
Если не установлено раширение с uploadprogress_get_info, но установлено APC (что встречается), получить количество загруженного контента можно с помощью функции apc_fetch().
Пример, например, по ссылке
www.ibm.com/developerworks/library/os-php-v525/index.html
Пример, например, по ссылке
www.ibm.com/developerworks/library/os-php-v525/index.html
+1
Расскажите пожалуйста как подключить uploadprogress_get_info
0
pecl.php.net/package/uploadprogress — вот ссыль на это расширение.
0
Опишите пожалуйста как его установить. Вещь нужная почти для каждого сайта.
0
Сам я, когда разрабатывал этот плагин, просил установить uploadprogress нашего админа. Но вот навскидку ссылка:
andyceo.ruware.com/blog/andyceo/kak-ustanovit-pecl-biblioteku-na-server-ubuntu — как установить pecl-расширение на убунту.
handynotes.ru/2007/06/pecl-php.html — а это под виндой.
К сожалению, не смогу вам помочь полноценно =\
Если не вы админите серв, попробуйте попросить его владельцев поставить это расширение.
andyceo.ruware.com/blog/andyceo/kak-ustanovit-pecl-biblioteku-na-server-ubuntu — как установить pecl-расширение на убунту.
handynotes.ru/2007/06/pecl-php.html — а это под виндой.
К сожалению, не смогу вам помочь полноценно =\
Если не вы админите серв, попробуйте попросить его владельцев поставить это расширение.
0
Всё красиво, но вот только не хватает возможности выбора и загрузки сразу нескольких файлов
+1
НЛО прилетело и опубликовало эту надпись здесь
Уже на вашем сервере не работает, или в демке?
0
НЛО прилетело и опубликовало эту надпись здесь
Ну да, кодировка должна быть utf-8.
А как именно отрабатывает скрипт? Просто ошибка, или же он все же пишет, что отображение прогресса загрузки не поддерживается сервером?
А как именно отрабатывает скрипт? Просто ошибка, или же он все же пишет, что отображение прогресса загрузки не поддерживается сервером?
0
НЛО прилетело и опубликовало эту надпись здесь
Так может быть все же причина в том, что не стоит расширение uploadprogress для php? (http://pecl.php.net/package/uploadprogress)
0
НЛО прилетело и опубликовало эту надпись здесь
Сообщение о том, что отображение прогресса не поддерживается, может быть вызвано лишь тем, что функция function_exists(«uploadprogress_get_info») возвращает false. Попробуйте в каком-нибудь левом скрипте посмотреть результат выполнения этой функции.
0
Плагин обновлен. Добавлена мультизагрузка и исправлен баг при повторной загрузке файла (был неприятный глюк). Необходимо обновить upload.php и jquery.form.js
0
Откройте для себя uploadify. Флеш стоит почти у всех.
-1
Вчера невнимательно перезалил обновления плагина, из-за чего весь день демо, оказывается не работало. Теперь fixed )
0
Сейчас тоже не работает
0
Оп, сжатие js и css на серваке отказало. Ща отключил его к хренам. Пробуйте ;)
0
Загружать данные формы и файл одновременно оно умеет?
Т.е. загрузка не просто файлов, а файлов с описанием, но, условно говоря, в одном запросе?
Т.е. загрузка не просто файлов, а файлов с описанием, но, условно говоря, в одном запросе?
0
ах да, еще
что происходит при ошибках загрузки? :)
что происходит при ошибках загрузки? :)
0
нету ни демо, ни самого плагина :((
0
sms-uslugi.ru/habr.rar — временное решение проблемы. Тут демка и скрипт.
Ща разберусь что с тем адресом случилось.
Ща разберусь что с тем адресом случилось.
0
это значит так- берем меняем библиотеку с 1.3.1 на 1.4.2 и скрипт радостно дохнет )
в get не входит вот сюда $.each(inputs,function(){
— пока не понимаю как пофиксить, но наверно у вас не то что-то с синтаксисом
в get не входит вот сюда $.each(inputs,function(){
— пока не понимаю как пофиксить, но наверно у вас не то что-то с синтаксисом
0
Добавьте на любой репозитарий, не работает ничего. github.com. У кого есть, отпишитесь пожалуйста.
0
Удивительно, вы уже второй за сегодня, кто обратился за плагинчиком =)
Вот временная ссылка на js и php файл — upload.com.ua/get/901687340/
Вот временная ссылка на js и php файл — upload.com.ua/get/901687340/
0
Ни одна ссылка ни не демо ни на плагин не работает.
Не могли бы Вы демку сбросить на какой нибудь файлообменник.
В смысле не только те, что скачались с временной ссылке, но и пример использования.
Спасибо
Не могли бы Вы демку сбросить на какой нибудь файлообменник.
В смысле не только те, что скачались с временной ссылке, но и пример использования.
Спасибо
0
И на том спасибо. Разберемся.
0
уважаемые, скиньте пожалуйста демку рабочую, у меня не получается работать с этим плагином…
0
В общем пока разбирался нашел схожее решение только без upload'а файлов.
Может кому пригодиться — www.linkexchanger.su/2008/45.html
Может кому пригодиться — www.linkexchanger.su/2008/45.html
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
jQuery плагин для получения данных формы + ajax аплоадер файлов