使用Ext.js中的ajax请求从浏览器打开或保存Excel文件附件

时间:2013-09-04 09:18:56

标签: spring-mvc extjs extjs4

  

我在服务器端生成excel文件并将其写入   outpuststream包含以下响应标题。

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
  

在我的客户端:如下所示对servlet的ajax调用:

Ext.Ajax.request({
            url: 'GenerateReport',
            method: 'GET',
            params: {
                'start_date': sd.getValue(),
                'end_date':ed.getValue()
            }
 });
  

浏览器显示以下响应标头:   enter image description here

     

我的问题:打开并保存对话框提示没有打开。可能是什么问题。请帮我解决这个问题。感谢任何帮助。谢谢。

3 个答案:

答案 0 :(得分:1)

尝试使用适当的URL而不是AJAX请求打开新窗口。

答案 1 :(得分:0)

  

谢谢@liya。我已经通过使用iframe而不是ajax调用来解决它。它得到了   直接下载。这是:

Ext.core.DomHelper.append(document.body, {
            tag : 'iframe',
            id : 'downloadIframe',
            frameBorder : 0,
            width : 0,
            height : 0,
            css : 'display:none;visibility:hidden;height:0px;',
            src : 'GenerateReport'
   });
  

但他们无论如何,在下载之前打开一个对话框,提示   '打开'或'保存'文件而不是直接保存它我是谁   做。

答案 2 :(得分:0)

为确保浏览器会提示OpenSave,您必须发送二进制内容类型。否则,浏览器会尝试使用关联的应用程序打开下载的文件。某些浏览器(较旧的IE即)仍可能从文件扩展名推断出相关的应用程序。

  

response.setContentType( “应用/八位字节流”);