服务器已形成c:\Statistics.xls,怎样传到客户端大家帮我看看ie下的下载为何不成功?谢了客户端:
{
text:'下载Excel文档',
tooltip:'将Excel统计表数据下载到本地计算机',
//iconCls:'excel',
icon:'pic/excel.gif',
handler : function() {
var vExportContent = _grid.getExcelXml();
if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {
if (! Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: 'tjxx.myaction?method=downExcel',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function(o, s, r) {
//alert("11111111"+r.responseText);
},
isUpload: true,
params: {exportContent: vExportContent}
})
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
} }
}服务器端:
public void downExcel(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filedisplay = "Statistics.xls";
filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
//File file = new File("C:" , "Statistics.xls");
File file = new File("C:" + File.separator + "Statistics.xls");
//response.setContentType("application/x-msdownload");
// 可以为application/x-msdownload或者application/octet-stream
response.setContentType("application/octet-stream; charset=gb2312");
response.setHeader("Content-disposition", "attachment; filename = " + filedisplay);
response.setContentLength((int) file.length());
byte[] buffer = new byte[4096];
BufferedOutputStream output = null;
BufferedInputStream input = null;
// 写缓冲区:
try {
output = new BufferedOutputStream(response.getOutputStream());
input = new BufferedInputStream(new FileInputStream(file));
int n = (-1);
while ((n = input.read(buffer, 0, 4096)) > -1) {
output.write(buffer, 0, n);
}
//response.flushBuffer();
output.flush();
}
catch (Exception e) {
} // maybe user cancelled download
finally {
if (input != null) input.close();
if (output != null) output.close();
}
}
{
text:'下载Excel文档',
tooltip:'将Excel统计表数据下载到本地计算机',
//iconCls:'excel',
icon:'pic/excel.gif',
handler : function() {
var vExportContent = _grid.getExcelXml();
if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {
if (! Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: 'tjxx.myaction?method=downExcel',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function(o, s, r) {
//alert("11111111"+r.responseText);
},
isUpload: true,
params: {exportContent: vExportContent}
})
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
} }
}服务器端:
public void downExcel(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filedisplay = "Statistics.xls";
filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
//File file = new File("C:" , "Statistics.xls");
File file = new File("C:" + File.separator + "Statistics.xls");
//response.setContentType("application/x-msdownload");
// 可以为application/x-msdownload或者application/octet-stream
response.setContentType("application/octet-stream; charset=gb2312");
response.setHeader("Content-disposition", "attachment; filename = " + filedisplay);
response.setContentLength((int) file.length());
byte[] buffer = new byte[4096];
BufferedOutputStream output = null;
BufferedInputStream input = null;
// 写缓冲区:
try {
output = new BufferedOutputStream(response.getOutputStream());
input = new BufferedInputStream(new FileInputStream(file));
int n = (-1);
while ((n = input.read(buffer, 0, 4096)) > -1) {
output.write(buffer, 0, n);
}
//response.flushBuffer();
output.flush();
}
catch (Exception e) {
} // maybe user cancelled download
finally {
if (input != null) input.close();
if (output != null) output.close();
}
}
ext代码:
var fd=Ext.get('frmDummy');
if (!fd) {
fd=Ext.DomHelper.append(Ext.getBody(),{tag:'form',method:'post',id:'frmDummy',action:'exportexcel.jsp', target:'_blank',name:'frmDummy',cls:'x-hidden',cn:[
{tag:'input',name:'exportContent',id:'exportContent',type:'hidden'}
]},true);
}
fd.child('#exportContent').set({value:vExportContent});
fd.dom.submit();exportexcel.jsp代码:
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String content = request.getParameter("exportContent");
content = new String(content.getBytes("ISO8859_1"));
response.setHeader("Content-Type","application/force-download");
response.setHeader("Content-Type","application/vnd.ms-excel");
//response.setHeader("Content-Type", "application/vnd.ms-excel; charset=GBK");
response.setHeader("Content-Disposition","attachment;filename=export.xls");
out.print(content);
//out.print(request.getParameter("exportContent"));
%> 谢谢