我在服务器端生成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()
}
});
浏览器显示以下响应标头:
我的问题:打开并保存对话框提示没有打开。可能是什么问题。请帮我解决这个问题。感谢任何帮助。谢谢。
答案 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)
为确保浏览器会提示Open
或Save
,您必须发送二进制内容类型。否则,浏览器会尝试使用关联的应用程序打开下载的文件。某些浏览器(较旧的IE即)仍可能从文件扩展名推断出相关的应用程序。
response.setContentType( “应用/八位字节流”);