jsf 文件下载

调用download方法,可以下载,可以弹出窗口.

public  void  download(ActionEvent event) {
         String path=(String)getRequestParameter( "path" );
         String fileName=(String)getRequestParameter( "fileName" );
         try  {
             downloadFile(path, fileName);
         catch  (IOException e) {
             setErrorMessage( "File not found." );
             e.printStackTrace();
         }
     }

public  static  void  downloadFile(String path, String fileName)  throws  IOException {
         // 获得JSF上下文环境
         FacesContext context = FacesContext.getCurrentInstance();
         // 获得ServletContext对象
         ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();
         // 取得文件的绝对路径
         String realName = servletContext.getRealPath(path) +  "/"  + fileName;
         HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
         downloadFile(httpServletResponse, realName, fileName);
         FacesContext.getCurrentInstance().responseComplete();
     }

public
  static  void  downloadFile(HttpServletResponse response,
             String realName, String fileName)  throws  IOException{
         response.setHeader( "Content-disposition" "attachment; filename="
                 + fileName);
         response.setContentType( "application/x-download" );
         //File exportFile = new File(realName);
         //response.setContentLength((int) exportFile.length());
         ServletOutputStream servletOutputStream = response.getOutputStream();
         byte [] b =  new  byte [ 1024 ];
         int  i =  0 ;
         FileInputStream fis =  new  java.io.FileInputStream(realName);
         while  ((i = fis.read(b)) >  0 ) {
             servletOutputStream.write(b,  0 , i);
         }
     }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值