Xpoint
   [напомнить пароль]

Upload file, Ajax

2006-10-05 22:14:36 [обр] Евгений Иванов [досье]

У того, у кого есть GMAIL, знает, что если создать письмо и прикрепить к нему файл, то в то время, пока пишешь текст письма, файл автоматом грузится на сервер (страница не перегружается), а потом форма убирается и вместо неё показывается имя файла, тип, размер и др.

Так вот вопрос - как это реализовать? Есть идеи?

спустя 19 минут [обр] d2rk [досье]
спросить у google
спустя 1 минуту [обр] Евгений Иванов [досье]

оригинально. а то я тупой. сегодня перерыл весь инет - нигде нет ответа!

ну ничего... сделаю сам, опишу...

спустя 14 минут [обр] Василий Свиридов [досье]
Обсуждалось неоднократно. Ищите по форуму.
спустя 33 минуты [обр] Евгений Петров [досье]
Евгений Иванов[досье] Это вряд ли. Скорее всего, идет периодическое сохранение текста письма ("Drafts"). Да и зачем бы отправлять файл, прикрепленный к письму, если вдруг раздумаешь отправлять это письмо?
Если правильно понимаю, то с помощью AJAX отправить файл нереально (уточню - без помощи XUL). Сдается мне (приношу извинения - не анализировал код Gmail), отправка письма (вместе с прикрепленными файлами) идет просто в скрытом фрейме.
спустя 1 час 11 минут [обр] Владимир Палант [досье]
Это он в IE со скрытыми полями <input type="file"> работает. Дыра безопасности, вообще-то (в жаргоне Microsoft — "фича"), другие браузеры такое не позволяют. Есть сильные подозрения, что и IE такие фокусы скоро позволять перестанет.
спустя 10 часов [обр] Евгений Иванов [досье]

Евгений Петров[досье]

Я тебе говорю точно, что когда к письму крепишь файл (сейчас это сделали без полей и кнопок, а сразу при нажатии на "Add attach" вылазит окошко для выбора файла; хотя совсем недавно показывалось поле и обычная кнопочка), то через некоторую задержку (10..20 сек. )он начинает грузиться на сервер, и в это время можно писать текст письма и другое делать. Если раздумал, тебе выбрасывается запрос - "хотите отменить?".

Насчёт IFRAME - да, соглашусь, наверное, именно так в GMAIL и идёт отправка файла на сервер.

И ещё код gmail осенью 2005-го года был 200 Кб, а сейчас уже 400 Кбайт! Охренели...

Я всё равно добью это, сделаю код, раз никто здесь не может дать ссылки на рабочий вариант, все умные, умеют только говорить...

спустя 45 минут [обр] Владимир Палант [досье]
Повторяю для особо понятливых: это не та вещь, которой стоит заниматься — пустая трата времени. Работать все равно будет только в одном браузере, да и там может скоро прикроют.
спустя 26 минут [обр] SeeGo [досье]
А что мещает создать форму на лету и отправить файл на сервер?
спустя 58 минут [обр] Виталий Шароватов [досье]
Владимир Палант[досье]
Кстати, Владимир, я только что проверил — Евгений Иванов прав, в Firefox gmail тоже заливает файлы в фоновом режиме, пока пользователь набирает письмо. Единственное различие в работе gmail file upload'а в ИЕ и ФФ в том, что, как Вы справедливо заметили, ИЕ позволяет работать со скрытыми полями файлов, а FF не позволяет.
Евгений Иванов[досье]
Посмотрите сюда: http://www.seemysites.net/projFolder/uploader/ - пример вроде бы совсем простой.
спустя 4 минуты [обр] Thomas [досье]
Как по моему лучший вариант реализовать это в iframe. На глаз этого видно не будет, а результат будет налицо. Причем насколько я знаю iframe часто применяется для обновления части страницы. Уже давно идут споры где применять iframe, а где AJAX в чистом виде.
спустя 15 минут [обр] Владимир Палант [досье]
Виталий Шароватов[досье]
Вообще-то я тоже проверял. И сейчас еще раз проверил — в Firefox файл отсылается только тогда, когда я нажимаю Send. Насколько я помню, програмно запустить отправление файла нельзя.
спустя 6 минут [обр] Иван Шумков [досье]
Полностью согласен с Thomas[досье]. Особой проблемы залить файл в фоновом режиме нет. Дмитрий Котеров реализовал эту возможность в своей замечательной JsHTTPRequest библиотеке.
спустя 4 минуты [обр] Иван Шумков [досье]

Владимир Палант[досье]

И сейчас еще раз проверил — в Firefox файл отсылается только тогда, когда я нажимаю Send.

Открыл gmail.com в Firefox 1.5.0.7. Нажал "Написать письмо". Приложил письмо. Через пару секунд файл залился:

softokn3.chk (application/octet-stream) 1kb
спустя 14 минут [обр] Евгений Иванов [досье]

Иван Шумков[досье]

404

Страница, к которой Вы обращаетесь, не найдена на сервере.

Чтобы вернуться на страницу, откуда Вы пришли, нажмите на кпопку ниже.

спустя 5 минут [обр] Евгений Иванов [досье]

Виталий Шароватов[досье]

угу. понял. нужно указать target на iframe от формы... хе..

спустя 4 часа 45 минут [обр] Виталий Шароватов [досье]
Евгений Иванов[досье]
Если же Вы делаете что-то для корпоративного пользования (или Вам наплевать на 10% не-ИЕ пользователей), советую обратить внимание на данную статью: http://www.codeproject.com/useritems/AJAXUpload.asp — там на server-side стоит ASP.NET, но проблемы переписать под php нет никаких. Более того, в таком случае можно реализовать нормальный прогрессбар.
спустя 46 минут [обр] Илья Cтpeльцын aka SelenIT [досье]
Виталий Шароватов[досье]
>10% не-ИЕ пользователей
По др. данным — ~20%. Кому верить больше?
спустя 4 часа 40 минут [обр] Виталий Шароватов [досье]
Илья Cтpeльцын aka SelenIT[досье]
Не знаю :) этот вариант вообще в скобках :)
спустя 18 дней [обр] Давид Мзареулян [досье]
«Программно запустить отправление файла» можно, и тут уже приводили решение. Делается скрытый фрейм, в него постится форма. Дальше — косметика: например, из данной формы поле ввода с выбранным юзером файлом переносится в скрытую форму, и уже она постится в скрытый фрейм… Но это всё вполне возможно, и в моём FF Gmail прекрасно подгружает файлы, пока я пишу письмо.
Powered by POEM™ Engine Copyright © 2002-2005