一段下载的代码,却有个让我百思不得其解的问题:<%
if (request.getParameter("start")==null){
    return;
}
try {
//session.removeAttribute("cvs_out");
com.nec.jp.supportal.search.SearchFormBean bean=new com.nec.jp.supportal.search.SearchFormBean();
bean.setKeyword(request.getParameter("keyword"));
bean.setOrder(request.getParameter("order"));
bean.setSort(request.getParameter("sort"));
com.nec.jp.supportal.search.SearchAction action=new com.nec.jp.supportal.search.SearchAction();
java.util.List list = action.getCSVData(bean);javax.servlet.ServletOutputStream  sout=response.getOutputStream();
response.setHeader("Content-disposition","attachment;filename="+"検索結果.csv");
response.setContentType("application/x-csv"); for (int i=0;i<list.size();i++){
byte[] bCSVRow = ((String)list.get(i)).getBytes("MS932");
sout.write(bCSVRow);//这样写可以弹出下载对话框
         //sout.write("hello".getBytes());//这样写不能弹出下载对话框
    }
throw new Exception("12345");
} catch(Exception ex) {
response.sendRedirect("http://www.163.com");
}
%>不能弹出对话框的时候,response.sendRedirect("http://www.163.com");好用,能弹出的时候,response.sendRedirect("http://www.163.com");这句话不起作用,我始终不明白这是为什么,很奇怪呀.难道是java的bug吗

解决方案 »

  1.   

    楼上啊,你肯定没有做过下载,下载页面不允许有javascript代码的.否则,这么简单我也不会问了.
      

  2.   

    <%
    //session.removeAttribute("cvs_out");
    //com.nec.jp.supportal.search.SearchFormBean bean=new com.nec.jp.supportal.search.SearchFormBean();
    //bean.setKeyword(request.getParameter("keyword"));
    //bean.setOrder(request.getParameter("order"));
    //bean.setSort(request.getParameter("sort"));
    //com.nec.jp.supportal.search.SearchAction action=new com.nec.jp.supportal.search.SearchAction();
    //java.util.List list = action.getCSVData(bean);javax.servlet.ServletOutputStream  sout=response.getOutputStream();
    response.setHeader("Content-disposition","attachment;filename="+"1.txt");
    response.setContentType("application/octet-stream");
    byte[] s = "hello".getBytes();
    for(int i=0;i<10;i++){
    sout.write(s);//这样写不能弹出下载对话框
    }
    sout.close();       
             
    //for (int i=0;i<list.size();i++){
    //byte[] bCSVRow = ((String)list.get(i)).getBytes("MS932");
    //sout.write(bCSVRow);//这样写可以弹出下载对话框
         
    // }%>
    这样写是可以的.
      

  3.   

    sorry是这样
    <%
    //session.removeAttribute("cvs_out");
    //com.nec.jp.supportal.search.SearchFormBean bean=new com.nec.jp.supportal.search.SearchFormBean();
    //bean.setKeyword(request.getParameter("keyword"));
    //bean.setOrder(request.getParameter("order"));
    //bean.setSort(request.getParameter("sort"));
    //com.nec.jp.supportal.search.SearchAction action=new com.nec.jp.supportal.search.SearchAction();
    //java.util.List list = action.getCSVData(bean);javax.servlet.ServletOutputStream  sout=response.getOutputStream();
    response.setHeader("Content-disposition","attachment;filename="+"検索結果.csv");
    response.setContentType("application/x-csv");
    byte[] s = "hello".getBytes();
    for(int i=0;i<10;i++){
    sout.write(s);//这样写不能弹出下载对话框
    }
    sout.close();       
             
    //for (int i=0;i<list.size();i++){
    //byte[] bCSVRow = ((String)list.get(i)).getBytes("MS932");
    //sout.write(bCSVRow);//这样写可以弹出下载对话框
         
    // }%>