服务器已形成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();
}

}

解决方案 »

  1.   

    我改用jsp,结果ie浏览器中文乱码,照着百度改了半天也没好。
    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")); 
    %> 谢谢