<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 閱讀(601) 評論(0)  編輯  收藏 所屬分類: JSF
    主站蜘蛛池模板: 免费看国产曰批40分钟| 国产精品免费看久久久久 | 亚洲国产精品成人午夜在线观看| 四虎国产精品免费久久影院| 黄色网址免费在线观看| 91亚洲精品麻豆| 亚洲精品无码av天堂| 一区二区三区在线免费看| 亚洲一卡2卡4卡5卡6卡在线99| 成人永久免费福利视频网站| A片在线免费观看| 亚洲人成自拍网站在线观看| 亚洲欧洲∨国产一区二区三区| 久久综合AV免费观看| 中文在线日本免费永久18近| 亚洲男人天堂2022| 无码午夜成人1000部免费视频| 亚洲综合中文字幕无线码| 亚洲中文字幕无码中文字在线| 永久免费毛片手机版在线看| 日本免费在线观看| 免费人成再在线观看网站| 亚洲一卡2卡3卡4卡国产网站| 亚洲精品无码永久中文字幕| 在线免费播放一级毛片| 亚洲欧洲∨国产一区二区三区 | 最近高清国语中文在线观看免费| 在线免费视频你懂的| 亚洲av成人无码网站…| 亚洲精品乱码久久久久久下载| 亚洲综合在线另类色区奇米| 免费人成激情视频| 好湿好大好紧好爽免费视频| 亚洲色无码专区一区| 亚洲国产精品成人久久久 | 羞羞视频在线免费观看| 亚洲Av无码乱码在线观看性色 | 丝袜捆绑调教视频免费区| 在线视频亚洲一区| 亚洲一区二区三区免费| 日韩精品视频免费观看|