Я не могу загрузить файл со страницы aspx, если страница aspx открывается в модальном всплывающем окне с помощью window.showModalDialog ().
У меня есть кнопка с изображением на странице aspx, при нажатии на неефайл Excel был создан с использованием некоторой бизнес-логики, а затем я добавляю его в заголовок ответа, чтобы сделать этот файл доступным для загрузки.Код, как показано ниже,
Protected Sub ibtnExport_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ibtnExport.Click
...
Some business logic to generate excel file.
...
Response.ClearHeaders()
Response.ContentType = "application/ms-excel"
Response.AddHeader("content-disposition", "attachment; filename=" + someXLSFile )
Response.TransmitFile(someXLSFileWithPath)
Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
End Sub
Когда я открываю эту страницу aspx как модальное всплывающее окно, оно не показывает окно загрузки браузера.В случае обычной (немодальной, открытой с помощью window.open) загрузки всплывающих окон работает нормально.
Я также попытался использовать другой подход для загрузки файлов.Вместо того, чтобы устанавливать заголовок ответа в ibtnExport_Click
, я открыл другую страницу aspx, например Download.aspx, используя window.open
и установил заголовки repsonse для события загрузки страницы в Download.aspx.Код, как показано ниже,
Protected Sub ibtnExport_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ibtnExport.Click
...
Some business logic to generate excel file.
...
Session("$FileToDownload$") = someXLSFileWithPath
ClientScript.RegisterStartupScript(GetType(String),"download","window.open('Download.aspx')",true)
End Sub
А в Download.aspx,
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim filetoDownload As String = CType(Session("$FileToDownload$"), String)
Dim fileName As String = System.IO.Path.GetFileName(filetoDownload)
Response.ClearHeaders()
Response.ContentType = "application/ms-excel"
Response.AddHeader("content-disposition", "attachment; filename=" + fileName)
Response.TransmitFile(filetoDownload)
Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
End Sub
Хорошо, он работает как в модальном, так и в немодальном всплывающем окне и дает рельеф довы развертываете приложение на IIS :).Да, этот подход работает на сервере разработки ASP.NET, но не работает на IIS.
Есть идеи, как заставить загрузку работать в модальных всплывающих окнах?