對於工作我正在處理文件導出。數據全部導出正常,但是關心的是沒有文件對話框出現,並且沒有來自瀏覽器的文件已被下載的指示。瀏覽器不顯示文件已下載
我的文件下載包含兩個ajax處理程序和一些javascript。 我的按鈕有一個onclick事件,它調用generateReport
,它將一個微調器放在頁面上並調用Handler。該處理程序準備數據並將其保存到文件中。
一旦完成,javascript會調用第二個處理程序來檢索已保存的文件,並且應該將其發送給用戶,並提示他們保存該文件。第二個處理程序被調用並且不會引發錯誤。
我的第二個(不工作)的處理程序是在這裏:
baseDir = ProjectConfig.BaseShareFolderPath
Dim fileStream As FileStream = New FileStream((baseDir + "\" + filePath), FileMode.Open, FileAccess.Read)
Dim bytes As Byte()
Dim binaryReader As BinaryReader = New BinaryReader(fileStream)
bytes = binaryReader.ReadBytes(fileStream.Length)
fileStream.Close()
fileStream.Dispose()
binaryReader.Close()
Dim fileName As String = filePath.Substring(filePath.IndexOf("\Crm") + 1)
context.Response.ContentType = "xls"
context.Response.AppendHeader("content-disposition", "attachment;filename=" & fileName)
context.Response.OutputStream.Write(bytes, 0, bytes.Length)
context.Response.OutputStream.Flush()
context.Response.OutputStream.Close()
context.Response.End()
任何人都可以看到任何理由,這將不提示與文件對話框的用戶?我們在其他項目中使用類似的代碼,我的似乎缺少一些小部分。
什麼JavaScript代碼是從前端調用此?它是用ajax還是窗口重定向完成的? –
我還建議將'filePath.Substring(filePath.IndexOf(「\ Crm」)+ 1)'改爲'System.IO.Path.GetFileName(filePath)' –
這是一個ajax調用,我會研究該GetFileName –