Можете ли вы использовать Javascript для обнаружения окна загрузки файлов, созданного на стороне сервера? - PullRequest
4 голосов
/ 16 июня 2010

У меня есть плагин jQuery, который я использую, чтобы динамически создавать и отображать форму на странице default.aspx asp.net, а затем отправлять ее.Страница, на которую она отправляется, является страницей pdf.aspx.Страница создает PDF, а затем использует Response.Write для записи файла (application / pdf) в браузер.Я использую тот же метод для отображения файлов XLSX в браузере.Он работает очень хорошо, но мне нужен обратный вызов или какое-то событие, чтобы сообщить кнопке, когда нужно остановить вращение.Это не позволяет пользователю постоянно нажимать кнопки Excel или PDF.Кто-нибудь знает способ обнаружить диалоговое окно файла, когда он не был создан с использованием JavaScript?Я также открыт для других методов обратного вызова со стороны сервера.

1 Ответ

5 голосов
/ 16 июня 2010

То, как я это делаю, было предложено в ответ на вопрос, который я задал здесь недавно T.J. Crowder. Я не могу найти ответ в последний раз, когда я написал это, потому что средство поиска «Stackoverflow» невероятно хромает, поэтому я, вероятно, напишу в блоге. Основная идея заключается в том, что ваш клиентский код (Javascript) должен добавить дополнительный параметр при отправке запроса на загрузку. Параметр должен содержать некоторую сгенерированную случайную строку (вероятно, достаточно текущей отметки времени). Затем сервер ищет этот параметр, и когда он готовит ответ с файлом загрузки, он также устанавливает cookie и присваивает ему это случайное значение.

Сразу после отправки (или непосредственно перед; это не имеет значения) код Javascript должен запустить интервальный таймер с подпрограммой, чтобы посмотреть значение document.cookie и посмотреть, содержит ли она эту случайную строку. Как только файл cookie содержит эту строку, вы знаете, что сервер отослал свой ответ и был представлен диалог загрузки файла.

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