OD OA 其实就是ascii中的\r\n,也就是换行
你在写入前,先将out清空试试看,并且将fis文件输入流也进行处理,先清楚前两个字节
然后写入
out.flush();out.flush();
while((i = fis.read()) != -1) 
  { 
    out.write(i); 
    //if(j++  < 2) 
    //System.out.println(i); 
  } out.flush();
fis.close(); 
out.close(); 

解决方案 »

  1.   

    flush好像不是这个用吧感觉是应该输出流已经写了些东西了
    对response 使用resetBuffer()方法试试
      

  2.   

    偶还是没能解决问题, 不过我找到了另外一种方法, 可以搞定文件下载. 把代码贴出来,希望对大家有帮助!
    <%@page import="java.net.*"%>
    <%    response.setContentType("application/x-download");
        String filedownload = (String)request.getAttribute("url");
        if(filedownload == null) 
    out.print("<b>can not open null file</b>");

        String filedisplay = (String)request.getAttribute("filename");
        String filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
        response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
        
        try
        {
            RequestDispatcher dis = application.getRequestDispatcher(filedownload);
            if(dis!= null) {
                dis.forward(request,response);
            }
            response.flushBuffer();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        finally {
                 out.clear(); 
    out = pageContext.pushBody();
      }
    %>