троббер для генерации файлов - PullRequest
2 голосов
/ 18 января 2011

Среда: IIS7 / IE / ASP.Net MVC / jQuery

Сценарий: когда пользователь нажимает кнопку отправки на веб-странице, сервер генерирует файл Excel на лету, а затем отправляет поток файлавернитесь в браузер клиента, и пользователь увидит диалог открытия / сохранения файла.Но страница остается прежней.

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

Но ajax не может получить поток файлов (или может?), поэтому я должен отправить еще один запрос, чтобы получитьфактический файл в обратном вызове ajax, где я могу сначала спрятать пульсатор.

Однако, поскольку последний запрос на получение файла автоматически выполняется кодом (не щелчком пользователя), пользователь увидит желтыйИнформационная панель, которая блокирует загрузку файла, что является ОЧЕНЬ глупой функцией в IE, потому что после того, как пользователь щелкнет правой кнопкой мыши желтую полосу и разрешит загрузку, ему придется снова сгенерировать файл!

Любая идея, каквыполнить это?

Спасибо

1 Ответ

0 голосов
/ 18 января 2011

Вот одно предложение:

  1. Запустить ajax-вызов, который создает поток памяти, содержащий файл Excel. Поместите поток памяти файла excel в кеш (с коротким сроком действия). Пусть вызов ajax возвращает "готовую" строку

  2. на веб-странице, у вас есть пульсатор (я полагаю, вы имеете в виду анимацию ожидания при вращении?) Делать анимацию до тех пор, пока она не получит строку «done» из вызова ajax, которая затем вызовет другой вызов ajax чтобы захватить файл Excel. Поскольку файл Excel уже находится в памяти, этот вызов должен быть намного быстрее, и вам не понадобится значок вращающейся анимации.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...