javascript - 浏览器不显示文件已下载

标签 javascript vb.net asp.net-ajax

为了工作,我正在处理文件导出。数据全部导出得很好,但令人担忧的是没有出现文件对话框,浏览器也没有指示文件已下载。

我的文件下载由两个 ajax 处理程序和一些 javascript 组成。 我的按钮有一个 onclick 事件,该事件调用 generateReport ,该事件在页面上放置一个微调器并调用一个处理程序。该处理程序准备数据并将其保存到文件中。

完成后,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()

任何人都可以看到这不会通过文件对话框提示用户的任何原因吗?我们在其他项目中使用类似的代码,我的似乎缺少一些小片段。

最佳答案

无法使用ajax将文件下载到客户端计算机。

在您的 JavaScript 中,您需要使用 window.location.replace(downloadUrl)window.open(downloadUrl)。后者将打开一个新窗口来下载文件,第一个将使用当前窗口来执行下载。

引用:Download a file by jQuery.Ajax

关于javascript - 浏览器不显示文件已下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141577/

相关文章:

.net - 如何防止 Visual Studio Windows 窗体设计器删除控件?

c# - 使用区域部署 ASP.NET MVC 2 Preview 2

javascript - Jquery 和 CSS 图像居中在选项卡中不起作用

javascript - 如何在表单提交事件后*运行一些 JavaScript?

javascript - 在 Canvas 中显示坐标 - JavaScript

jquery - 如何在jquery模板末尾添加一个div?

c# - HttpSessionState 在哪里、如何、优点?

javascript - 在 React 中使用 props

vb.net - Silverlight中Prism MVVM的VB.net示例

java ? : operator in vb. 网络