Имам плъгин jQuery, който използвам за динамично създаване и изобразяване на формуляр на страница asp.net default.aspx, след което го изпращам. Страницата, на която се изпраща, е страница pdf.aspx. Страницата създава PDF, след което използва Response.Write, за да напише файла (приложение/pdf) в браузъра. Използвам същия метод и за изобразяване на XLSX файлове в браузъра. Работи наистина страхотно, но имам нужда от обратно извикване или някакво събитие, за да кажа на бутона кога да спре да се върти. Това не позволява на потребителя да щраква непрекъснато върху бутоните Excel или PDF. Някой знае ли начин за откриване на диалоговия прозорец на файла, когато не е създаден с помощта на javascript? Също така съм отворен за други методи за обратно извикване от страната на сървъра.
Можете ли да използвате Javascript, за да откриете прозорец за изтегляне на файл, създаден от страна на сървъра?
Отговори (1)
Начинът, по който правя това, беше предложен в отговор на въпрос, който зададох тук преди малко от T.J. Crowder. Не мога да намеря отговора от последния път, когато написах това, защото инструментът за „търсене“ на Stackoverflow е толкова невероятно куц, така че вероятно ще напиша публикация в блога. Основната идея е, че вашият клиентски код (Javascript) трябва да добави допълнителен параметър, когато изпраща заявката за изтегляне. Параметърът трябва да съдържа някакъв генериран произволен низ (вероятно само текущото времево клеймо е достатъчно добро). След това сървърът търси този параметър и когато подготвя отговора с файла за изтегляне, той също задава бисквитка и й дава тази произволна стойност.
Веднага след изпращането (или точно преди; това няма особено значение), кодът на Javascript трябва да стартира интервален таймер с рутина, за да прегледа стойността на document.cookie
и да види дали съдържа този произволен низ. Веднага щом бисквитката съдържа този низ, тогава знаете, че сървърът е изпратил обратно отговора си и че е представен диалоговият прозорец за изтегляне на файл.