java实现流下载为什么没有响应???急急急

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");

    String filename = "a" + df.format(new Date()) + ".xls";
    //File file=new File(filename);
    try {
        ServletOutputStream os = response.getOutputStream();  
        response.reset();  
        // 设置response的Header 
         response.setContentType("application/x-msdownload"); 
         response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));  
         //response.addHeader("Content-Length", "" + file.length());  

        WritableWorkbook wb=Workbook.createWorkbook(os);
        int count=list.size()/65535+1;
        for(int i=1;i<=count;i++){

        WritableSheet ws=wb.createSheet("sheet"+String.valueOf(i), i-1);
        ws.addCell(new Label(0, 0, "标题"));
        ws.addCell(new Label(1, 0, "姓名"));
        ws.addCell(new Label(2, 0, "手机号"));
        ws.addCell(new Label(3, 0, "咨询编号"));
        ws.addCell(new Label(4, 0, "内容"));
        //ws.addCell(new Label(0, 5, "回复内容"));

        int row=1;
        int col=0;

        for(Content c:list){
            if(row==65535) break;
            ws.addCell(new Label(0, row, c.getContentExt().getTitle()));
            ws.addCell(new Label(1, row, c.getAttr().get("name")));
            ws.addCell(new Label(2, row, c.getAttr().get("phone")));
            ws.addCell(new Label(3, row, c.getAttr().get("lawCode")));
            ws.addCell(new Label(4, row, c.getContentTxt().getTxt()));
            row++;

        }

    }
        wb.write();
        wb.close();

        os.close();
       response.flushBuffer();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RowsExceededException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (WriteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

2个回答

在 os.close()前
加个os.flush();

huqqdyx
huqqdyx response.setContentType("application/x-msdownload"); 这个格式有问题吧,你是xls
5 年多之前 回复
huqqdyx
huqqdyx 加out.flush(); 写出去啊
5 年多之前 回复
u013262276
神雕摩卡之2 加了也是没有用的~
5 年多之前 回复

数据没设置到流中去。
InputStream in = new FileInputStream(file);
byte[] buf=new byte[1024];
ServletOutputStream out=response.getOutputStream();
int len=0;
while((len=in.read(buf))!=-1){
out.write(buf, 0, len);
}
in.close();
out.flush();
out.close();

qq_41206989
MustCheer 回复神雕摩卡之2: 怎么解决的??我也遇到这个问题了
大约一年之前 回复
u013262276
神雕摩卡之2 不是这个问题,这个我已经解决了,非常感谢你的回答!
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐