<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 閱讀(612) 評論(0)  編輯  收藏 所屬分類: JSF
    主站蜘蛛池模板: 亚洲色欲色欲www在线播放| 国产黄片不卡免费| 亚洲伊人成无码综合网| 伊人久久免费视频| 亚洲av永久中文无码精品| 亚洲国产成人影院播放| 大学生一级特黄的免费大片视频 | 一区二区三区免费精品视频 | 91高清免费国产自产拍2021| 亚洲五月丁香综合视频| 777亚洲精品乱码久久久久久 | 亚洲区小说区图片区QVOD| 在线观看免费人成视频| 最近中文字幕电影大全免费版 | 亚洲一区二区三区丝袜| 亚洲综合欧美色五月俺也去| 亚洲短视频在线观看| 78成人精品电影在线播放日韩精品电影一区亚洲 | 好湿好大好紧好爽免费视频| 亚洲gay片在线gv网站| 精品在线免费视频| 日韩精品视频在线观看免费| 日本亚洲中午字幕乱码| 日本视频免费观看| 久久青青草原国产精品免费| 午夜网站在线观看免费完整高清观看| 精品一区二区三区免费| 国产精彩免费视频| 国产老女人精品免费视频| 激情综合色五月丁香六月亚洲| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲一区二区三区影院| 亚洲一区免费视频| 成年大片免费视频播放一级| 免费在线看污视频| 国产成人精品免费视频大全五级 | 日韩免费一区二区三区| 亚洲成a人片在线观看老师| 亚洲综合另类小说色区| 亚洲一区二区无码偷拍| 日韩中文字幕免费视频|