<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 5,  comments - 7,  trackbacks - 0
    通過JSF下載文件,不管這個文件是物理存在的,還是由服務器內存中生成的。
    用戶從頁面點擊連接(link),下載相關的文件,該文件存在服務器端,或者由服務器端生成文件流,沒有物理文件;下載后頁面不跳轉。

    JSP代碼:


    <h:commandLink actionListener="#{productBean.downloadAction}" styleClass="highLightLink">
       <h:outputText value="download"/>
       <f:param name="productId" value="#{productBean.id}"/>
    </h:commandLink>



    Backing bean設計及代碼:
    注意這是個Action listener方法,沒有返回值,并且有javax.faces.event.ActionEvent參數


       public void downloadAction(ActionEvent event) {
        try {
          String fileName="D:\\temp\\images\\products\\" + this.id + ".xls";
          logger.debug("file name=" + fileName);
          ByteArrayOutputStream baos=this.serviceLocator.getFileService().downloadFile(fileName); //調用Service方法,獲得文件的ByteArrayOutputStream
          HttpServletResponse response=FacesUtils.getServletResponse();
          response.setHeader("Content-disposition", "attachment; filename=" + id+ ".xls" ); //不是內嵌顯示(inline),而是作為附件下載
          response.setContentLength(baos.size());
          ServletOutputStream sos=response.getOutputStream();
          baos.writeTo(sos);
          baos.close();
          sos.flush();
        } catch (IOException ex) {      
          logger.debug(ex);
        }  
      }



    Service代碼:
    這個實現是一個從已經存在的物理文件獲得輸出流的范例,至于由Server在內存中生成輸出流也是一樣處理,例如生成一個Excel文件,再讓用戶下載。


    public ByteArrayOutputStream downloadFile(String fileName) throws IOException {
        FileInputStream fis=new FileInputStream(fileName);
        BufferedInputStream bis=new BufferedInputStream(fis);
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        BufferedOutputStream bos=new BufferedOutputStream(baos);
        
        int i;
        while((i=bis.read())!=-1) {
          bos.write(i);
        }
        bos.flush();//提交文件流,很關鍵
        bis.close();
        return baos;
      }

    posted on 2008-11-27 11:25 Vincent-chen 閱讀(604) 評論(0)  編輯  收藏 所屬分類: JSF
    主站蜘蛛池模板: 91黑丝国产线观看免费| 尤物永久免费AV无码网站| 最近2019中文字幕免费直播| 国产a视频精品免费观看| 国产成人精品日本亚洲专区| 亚洲综合视频在线观看| 日韩久久无码免费毛片软件| 成年黄网站色大免费全看| 久久精品国产亚洲AV麻豆网站| 亚洲色欲啪啪久久WWW综合网| 最近更新免费中文字幕大全 | 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久国产免费一区| 免费看又爽又黄禁片视频1000| 国产AV无码专区亚洲AVJULIA| 久久人午夜亚洲精品无码区| 久久黄色免费网站| 亚洲黄色高清视频| 两个人看的www免费视频中文| 国产V亚洲V天堂A无码| 84pao强力永久免费高清| 亚洲专区一路线二| 日韩精品无码免费一区二区三区| 国产片免费福利片永久| 亚洲w码欧洲s码免费| 午夜免费福利在线| 久久成人18免费网站 | 亚洲精品二区国产综合野狼 | 亚洲 欧洲 日韩 综合在线| 91精品视频在线免费观看| 亚洲中文字幕久久久一区| 亚洲国产成人久久综合碰| 国产精品观看在线亚洲人成网| 成人毛片18女人毛片免费96| 亚洲免费视频观看| 日本视频一区在线观看免费| 亚洲熟妇无码AV| 国产亚洲综合网曝门系列| 免费看国产精品3a黄的视频| 国产成人精品日本亚洲18图| 免费看片在线观看|