有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用ajax下载生成的excel文件

我正在使用struts2框架开发一个应用程序。当用户提供日期范围时,我需要准备报告excel文件,并在下载弹出窗口中显示。我能够创建excel的io流,但我不知道如何使用ajax打开弹出窗口

我正在动态生成文件并返回流。因此无法给出文件路径。我希望ajax调用显示一些消息,比如"Please wait.."。因为文件生成需要更多时间,而且链接似乎不起作用


共 (3) 个答案

  1. # 1 楼答案

    无需执行任何AJAX调用

    只需将byte[]作为Struts2 ^{} result返回即可, 配置了ContentDisposition: attachment;(而不是ContentDisposition: inline,它将尝试在浏览器中打开它,而不是询问下载或使用桌面应用程序打开)

    要通知用户发生了什么事,请求已发送,系统未冻结,您需要一个Loading OVERLAY

    覆盖是放置在页面上的一个元素,通常有一个部分透明的背景,一个表示“正在加载…”的动画图像,以及一种模式行为(在页面更改之前,它不会关闭,并且它将防止重复发布同一请求,如双击等)

    当然,如果你打开了一个附件,页面不会改变,那么你需要截取下载结束并自己关闭覆盖,或者给用户一个按钮来关闭它

    要拦截它,可以尝试^{}

    如果想创建自定义覆盖,可以使用^{}生成加载图像

    如果你不想重新发明轮子,你可以看看现有的覆盖层,比如^{}

  2. # 2 楼答案

    在ajax的成功方法中,不要返回流,而是将文件保存在服务器上,并打开一个带有地址的弹出窗口,以返回正确的文件。但在某些浏览器中,弹出窗口可能会被阻止,因此您需要为您的站点(本地主机或其他URL)允许这样做

  3. # 3 楼答案

    下载文件与Ajax无关

    您的请求可以是ajax请求,但只需给出生成的文件路径,浏览器就会下载