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

本文介绍了一个使用Java实现的导出Excel文件的例子。通过设置响应类型和头部信息,可以将服务器上的文件以附件形式提供给客户端下载。该示例还展示了如何读取服务器上的文件并将其发送到客户端。
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才行,不然将无法把服务器端的文件下载到本地
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值