java文件下载

/**  

     * 下载文件  

 

     */  

    public ActionForward downLoad(ActionMapping mapping, ActionForm form,   

            HttpServletRequest request, HttpServletResponse response)   

            throws Exception {   

        String destPathName = servlet.getServletContext().getRealPath("/");   

        response.reset();   

       String fileName = request.getParameter("fileName");   

        String filePath = request.getParameter("filePath");   

        filePath = destPathName + "/" + filePath;   

        int index = fileName.lastIndexOf(".");   

        String savename = fileName.substring(0, index);   

        String hz = fileName.substring(index + 1, fileName.length());   

        // response.setCharacterEncoding("GBK");   

        //response.setContentType("application/OCTET-STREAM");   

//不禁用页面缓存,使文件可以直接打开   

        response.setHeader("Pragma""");   

        response.setHeader("Cache-Control""");   

        response.setContentType("application/x-msdownload");   

        // response.setContentType("application/ms-excel;charset=GBK");   

        response.setHeader("Content-Disposition""attachment;   filename=/""  

                + toUtf8String(savename) + "." + hz);   

  

        ServletOutputStream sos = response.getOutputStream();   

        InputStream is = new java.io.FileInputStream(filePath);   

 

        int i = 0;   

        while ((i = is.read()) != -1) {   

            sos.write(i);   

        }   

  

        is.close();   

        sos.close();   

        sos.flush();   

        return null;   

    }   

  

    // toUtf8String()对中文进行转换   

    // 下载为中文名不会出现乱码   

    private String toUtf8String(String s) {   

        StringBuffer sb = new StringBuffer();   

        for (int i = 0; i < s.length(); i++) {   

            char c = s.charAt(i);   

            if (c >= 0 && c <= 255) {   

                sb.append(c);   

           } else {   

                byte[] b;   

                try {   

                    b = Character.toString(c).getBytes("utf-8");   

                } catch (Exception ex) {   

                    System.out.println(ex);   

                    b = new byte[0];   

                }   

                for (int j = 0; j < b.length; j++) {   

                    int k = b[j];   

                    if (k < 0)   

                        k += 256;   

                    sb.append("%" + Integer.toHexString(k).toUpperCase());   

                }   

            }   

        }   

      return sb.toString();   

    }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值