Response 流下载文件

  最近研究了文件现在代码如下:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String templateName = req.getParameter("templateName");//need download file name

        //server file address.
        StringBuffer urlBuffer = new StringBuffer();
        String  realPath = req.getSession().getServletContext().getRealPath("/");
        urlBuffer.append(realPath);
        urlBuffer.append("templates/");
        urlBuffer.append(templateName);       
        String url =urlBuffer.toString();

       
        File f = new File(url);
        String filename = f.getName();
        int length = 0;
        ServletOutputStream op = resp.getOutputStream();       
        resp.setContentLength((int) f.length());
       
        if (templateName.endsWith("xls")) {
            resp.setContentType("application/vnd.ms-excel");
        }else if (templateName.endsWith("xlsx")) {
            resp.setContentType("application/vnd.ms-excel");
        }else if (templateName.endsWith("pdf")) {
            resp.setContentType("application/pdf");
        }else if (templateName.endsWith("doc")) {
            resp.setContentType("application/msword");
        }else if (templateName.endsWith("docx")) {
            resp.setContentType("application/msword");
        }
        resp.setHeader("Content-Disposition", "attachment; filename*=\"utf-8''" + filename + "");
        resp.setHeader("Pragma", "No-cache");
        resp.setHeader("Cache-Control", "no-store");
        resp.setDateHeader("Expires", 0);
       
        byte[] bytes = new byte[1024];
        DataInputStream in = new DataInputStream(new FileInputStream(f));
        while ((in != null) && ((length = in.read(bytes)) != -1)) {
            op.write(bytes, 0, length);
        }
        op.close();
        resp.flushBuffer();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值