Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Очистка FileUpload при обновлении страницы


Автор: Kim 21.1.2009, 07:40
Имеется страница, на которой располагается по умолчанию 3 элемента FileUpload, а пользователь, если желает, может воспользоваться кнопкой "добавить" и ему будут по одному добавляться элементы. Предполагается, что пользователь может загрузить неограниченное количество файлов.

Проблема заключается в следующем. Допустим, пользователь сначала выбрал 3 необходимых ему файла, и только потом нажал на кнопку "добавить". Так как кнопка - серверный элемент и обработчик тож находится на сервере, то страница перегружается, и - о ужас! - в трех предыдущих элементах пропадают имена файлов. 

Кто подскажет, как сие безобразие обойти? smile 

//пс: я понимаю, повышение безопасности, запрет на запись пути/имени файла туда... но пользователь же САМ выбрал этот файл! Надо добиться лишь того, чтобы его выбор оставался, а не исчезал...

заранее премногоблагодарен

Автор: Gwendolen 23.1.2009, 00:21
Никак без статичиских объектов (что есть ересь smile ). Нельзя сереализовать данные файлового потока.

Однажды видел пример:
В рантайме создается сколько необходимо элементов FileUpload (кнопки Add/Delete), а по нажатии Load получается содержимое всех файлов из FileUpload. Не помню только при нажатии на Add сохранялись ли в существующих FileUpload данные... Но нормально обрабатывалось одновремено десятки файлов. 

Автор: Любитель 25.1.2009, 18:33
Если ты делаешь POST (в виде постбека в том числе) на сервер при нажатии твоей Add - то действительно никак. Самый простой способ - апдейт-панели и встроенные средства ASP .Net AJAX. Самый "правильный" (на мой взгляд) способ - вообще избежать запросов на сервер при нажатии Add (в том числе AJAX-запросов). Т. е. написать скрипт, добавляющий див/строку с нужным инпутом. На сервере разбирать Request. Либо (что правильнее) написать свой контрол для этого.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)