java文件下载

来源:互联网 发布:高考摄影专业知乎 编辑:程序博客网 时间:2024/05/17 03:41

一、页面上用 超链接 a  或者 是 iframe的src属性

二、Java代码

1、HttpServletResponse 和 HttpServletRequest    2、下面的方法是struts2利用ServletActionContext获取  HttpServletResponse 和 HttpServletRequest    ,spring mvc直接写在方法参数列表即可。 3、IO流读写

    /**
     * 下载订单模板
     * @param response
     * @param req
     * @return
     */
    public String downloadOrderTemplate(){
     
     HttpServletResponse response = ServletActionContext.getResponse();
     HttpServletRequest  req  = ServletActionContext.getRequest();
     
     String fileName = "订单模板.xls";
     String realPath = req.getSession().getServletContext().getRealPath("/guest/distPlatform/excelOrderTemplate/");
     
     System.out.println(realPath);
  System.out.println(new File(realPath,fileName).toString());
     
  BufferedInputStream in;
   
  try {
   
   in = new BufferedInputStream(new FileInputStream(new File(realPath,fileName)));
 
   ByteArrayOutputStream out = new ByteArrayOutputStream();

   byte[] temp = new byte[1024];
   int size = 0;
   while ((size = in.read(temp)) != -1) {
    out.write(temp, 0, size);
   }
   System.out.println(size);
   in.close();
   
   byte[] buff=out.toByteArray();
   
   response.reset();
   response.setHeader("Content-Disposition", "attachment; filename=\""
     + new String(fileName.getBytes("gb18030"), "iso8859-1")
     + "\"");
     
   response.addHeader("Content-Length", "" + buff.length);
   response.setContentType("application/octet-stream;charset=UTF-8");
   
   OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
   outputStream.write(buff);
   outputStream.flush();
   outputStream.close();

  } catch (Exception e) {
            log.info("下载订单模板异常");
   e.printStackTrace();
  }
   
     return null;
    }

0 0
原创粉丝点击