<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 閱讀(610) 評論(0)  編輯  收藏 所屬分類: JSF
    主站蜘蛛池模板: 岛国岛国免费V片在线观看| 亚洲国产精久久久久久久| 成人永久免费福利视频网站| 四虎在线视频免费观看视频| 99热在线免费播放| 日韩内射激情视频在线播放免费| 久久午夜无码免费| 99re免费在线视频| 18未年禁止免费观看| 69xx免费观看视频| 一二三四在线播放免费观看中文版视频| 亚洲香蕉免费有线视频| 97视频免费在线| 一个人免费观看视频www| 成人毛片18女人毛片免费| 破了亲妺妺的处免费视频国产| 日韩一级在线播放免费观看| 全部免费a级毛片| 国产成人A亚洲精V品无码| 久久国产亚洲精品麻豆| 久久久综合亚洲色一区二区三区| 亚洲大片在线观看| 亚洲一区二区三区在线观看蜜桃| 亚洲色无码专区一区| 美女视频黄a视频全免费网站色| 一本久久免费视频| 国产综合免费精品久久久| 久久99热精品免费观看牛牛| 成年人免费的视频| 国产乱子影视频上线免费观看| 亚洲一区精品伊人久久伊人 | 一级a性色生活片久久无少妇一级婬片免费放 | 韩国免费一级成人毛片| 最新欧洲大片免费在线| 国产福利免费观看| 亚洲色欲一区二区三区在线观看| 亚洲av色福利天堂| 亚洲一区二区三区成人网站 | 国产亚洲无线码一区二区| 亚洲一区中文字幕久久| 亚洲欧美熟妇综合久久久久 |