Отправка изображения на сервер через форму в другом фрейме @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 12 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Заголовок сообщения: Отправка изображения на сервер через форму в другом фрейме
Сообщение Добавлено: 1 Декабрь 2006, 23:33:03 
Задача:

Есть два фрейма. В первом - форма с полем ввода textarea, элементом для выбора файла (input type=file) и кнопка Send. Второй (1x1 пиксель) служит для отправки содержимого на сервер (чтобы отправлять введенные данные без перезагрузки страницы и мелькания блока с интерфейсом) - этакий Ajax времен первой мировой.

Если не учитывать возможность отправки файла на сервер - все тривиально: после нажатия на Send, дублируем содержимое формы в форму второго фрейма и делаем той форме submit(). Но как быть с полем для выбора файла?
Его value свойство не доступно для записи по понятным причинам, следовательно данное поле не скопировать в такое же поле второго фрейма. Была мысль, при щелчке на кнопку Browse первого фрейма вызывать метод .click() для "input type=file" элемента второго (невидимого фрейма), тогда пользователь выберет файл и он сразу окажется в нужном поле формы для отсылки. Выяснилось, что кроме как в IE, нигде .click() метод для поля выбора файла не работает.

Вопрос: как реализовать пересылку картинки на сервер в данном случае? Важно, чтобы визуально не был заметен процесс отсылки: типа нажал на кнопку Send - все отослалось и в интерфейсной части отобразился успешный статус.

Предложения гуру?
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 1 Декабрь 2006, 23:44:00 
1. Изначально сделать фрейм осмысленного размера и поставить контролы непосредственно в него.
2. По submit сделать фрейм размером 1x1 и перенести фокус в другое место.
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 1 Декабрь 2006, 23:56:58 
1. Yes
2. А что отображать вместо? Три описанных выше контрола должны оставаться видимыми (textarea - очищаться). Не пропадать. То есть желаемый результат - это как если бы пользователь на форуме воспользовался функцией "быстрый ответ" (ajax), с функцией одновременной закачки изображений.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Декабрь 2006, 00:11:23 
gregzem, кто тебе мешает сделать два (3, 4 … n) внешне идентичных фрейма и показывать их поочередно?
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 2 Декабрь 2006, 00:16:16 
Здравый смысл. Хак какой-то получается...
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Декабрь 2006, 00:23:59 
gregzem, не вижу ничего противоречащего здравому смыслу. Тебе нужна возможность асинхронной -- и, потенциально, пересекающейся во времени, кратной -- отправки запросов. Штатное решение -- для отправки каждого нового запроса создавать нового агента (фрейм), по окончании -- уничтожать агента или возвращать в пул для повторного использования.

Стандартная практика программирования.
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 3 Декабрь 2006, 21:11:58 
Попробовал с фреймами.
Все работает, за исключением одного момента. При замещении содержимого одного фрейма другим область DIV (в которой расположен видимый фрейм с формой) где-то на полсекунды становится белой, затем появляется форма. Такое ощущение, что содержимое фрейма по второму разу загружается в него. Некрасиво выглядит, область фрейма мигает при отправке сообщения.
abraitcev
новый человек
6
Сообщения: 165
Зарегистрирован: 28.09.02
Откуда: Murmansk
Сообщение Добавлено: 3 Декабрь 2006, 23:29:02 
gregzem, а что, если использовать target ?
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 4 Декабрь 2006, 22:41:04 
abraitcev, хорошая идея, надо попробовать. В качестве таргета видимо следует использовать другой (невидимый) фрейм?
1NV1Z0R
соучастник
12
Сообщения: 971
Зарегистрирован: 27.09.05
Сообщение Добавлено: 5 Декабрь 2006, 00:38:53 
используй какой нить флешевый загрузчик файлов
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 5 Декабрь 2006, 14:40:00 
Флеш не подходит. Требование - из Client-side - только JS.
??????21628
новый человек
0
Сообщения: 19
Зарегистрирован: 30.10.06
Сообщение Добавлено: 5 Декабрь 2006, 19:11:04 
abraitcev, :beer:
а че на самом деле про target никто сразу не вспомнил-то?
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 12 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


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