JQuery BlockUI - Как разблокировать пользовательский интерфейс после загрузки файла? - PullRequest
3 голосов
/ 26 марта 2009

Используя ASP.Net, JQuery и BlockUI, я пытаюсь разблокировать интерфейс после отображения диалогового окна загрузки файла.

Я блокирую пользовательский интерфейс при нажатии кнопки экспорта:

   <script type="text/javascript">     
    $(document).ready(function(){        
        $('#<%= BtnExport.ClientID%>').click(function(){
            $.blockUI(); 
        });
    });    
    </script>

После этого я генерирую сторону файлового сервера, используя:

        private void SendFileToUser(byte[] file, string contentType, string filename)
        {
            Response.Clear();
            Response.ContentType = contentType;
            Response.AppendHeader("Content-Disposition", "attachment; filename="+filename);
            Response.OutputStream.Write(file,0,file.Length);
            Response.OutputStream.Flush();   
            Response.End();
        }

После выполнения этого кода я хотел бы разблокировать интерфейс.

Я рассмотрел разные варианты:

  1. Опрос с использованием Ajax-вызовов, чтобы увидеть, был ли файл сгенерирован.
  2. Сохраните файл в сеансе и перенаправьте на ту же страницу, а затем создайте загрузку.

Но оба варианта кажутся неудачными, и я думаю, что должен быть умный способ JavaScript, чтобы получить ручку или дождаться открытия файлового диалога.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 11 апреля 2013

Нет способа проверить это; Нет такого события, как ondownloadready. Но есть некоторые обходные пути http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser

0 голосов
/ 17 сентября 2014

Метод, который я использовал, - это отправка куки в дополнение к вложенному файлу, которое вы можете обнаружить через тайм-аут с использованием JavaScript, а затем разблокировать пользовательский интерфейс

Подробности здесь http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx

0 голосов
/ 26 марта 2009

Не храните файл в сеансе, это огромная трата ресурсов. Почему бы просто не опубликовать данные вашей формы на странице «Загрузка» с сообщением «Ваш файл должен загрузиться на мгновение ...». Это то, как популярные сайты загрузки, такие как www.download.com делают это, когда приходят на свою страницу загрузки .

Это дает пользователю возможность повторить попытку просто путем обновления, и вам не нужно беспокоиться о тайм-аутах сеанса, поскольку все ваши данные находятся в заголовке POST, когда они попадают на страницу.

...