【问题标题】:JAX-RS webservice serving excel files from ajax call, how to show save dialogJAX-RS webservice从ajax调用提供excel文件,如何显示保存对话框
【发布时间】:2013-01-14 15:33:29
【问题描述】:

我有一个 JAX-RS 网络服务,它创建一个 excel 文件作为字节数组并将其返回到我的 javascript 应用程序, 该服务可以正常工作,因为我可以使用 firebug 检查响应,它包含我设置的标头和包含 excel 文件的字节。

但是我认为通过设置 content-disposition 标头会有一个保存对话框,似乎没有。
下面我粘贴了我在回复中收到的标题,有什么我忘记了吗?

Content-Disposition attachment; filename=file.xls
Content-Length  17920
Content-Type    application/vnd.ms-excel
Date    Thu, 10 Jan 2013 07:07:49 GMT
Server  Apache-Coyote/1.1
X-Powered-By    Servlet 2.5; JBoss-5.0/JBossWeb-2.1

ajax 调用当前没有成功函数,我是否需要编写某种函数来显示保存对话框,或者我设置额外的标题是否足够,如果需要,哪些?

谢谢
J.

【问题讨论】:

  • 不使用 ajax 只是做一个window.location.href = 'path/to/xlsfile/';
  • Excel 没有实际路径,它从未保存到光盘,还有其他方法吗?
  • 它与 ajax 请求中使用的请求 URL 相同,如果 ajax 请求是 post 请求,则使用表单并将其发布到不可见的 iframe。

标签: jquery ajax jax-rs


【解决方案1】:

正如上面 Musa 所建议的,摆脱 AJAX 并将您的用户转发到返回 Excel 数据的 URL,该 URL 与您现在使用的标题完全相同(它们是正确的)。

【讨论】:

    【解决方案2】:

    这就是我修复它的方法:

    我保留了 ajax 调用,因为我正在以指定的 json 格式向服务器端发送大量参数和数据数组,但是我返回了一个 base64 编码的字符串,我将它添加到一个隐藏的表单中,该表单指向一个链接服务器端使用解码后的字符串设置响应中的标头,这不是最优雅的解决方案,但它可以解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 2014-12-03
      • 2013-06-14
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多