struts2的action以流的方式实现文件下载时的问题

public class ExportExcelInfo extends BaseAction {
    private String filename;
    @SuppressWarnings("unused")
    
    private static final long serialVersionUID = 1L;
    private static final LogDebug logDebug = new LogDebug(ExportExcelInfo.class);
    public String getfilename() {
        return filename;
    }
    public void setfilename(String filename) {
        this.filename = filename;
    }
 
    public String  execute() throws Exception{
         this.getResponse().setContentType("application/vnd.ms-excel");    
         this.getResponse().setHeader("Content-disposition", "attachment;filename=a.xls");
        this.filename="\\template\\a.xls";
        String filePath=this.getRequest().getRealPath(this.filename);
        byte[] buffer = new byte[16*1024];
        int read;
        File file = new File(filePath);
        InputStream is = new FileInputStream(file);
        OutputStream os = this.getResponse().getOutputStream();
        while((read = is.read(buffer))>=0){
            System.out.println("read:"+read);
            os.write(buffer,0,read);
            os.flush();
        }
        os.close();
        is.close();
        return null;
    }

}

千万注意,在上面的输出流,必须用 this.getResponse.getOutPutStream才行,不然将无法把服务器端的文件下载到本地
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值