簡易代碼之家

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks

          Jsp中文件下載的處理

          有些人直接把要下載的文件放在項目web下面的虛擬路徑下,然后提供鏈接下載,這種處理對客戶端的要求比較高,要求客戶機器上必須有要下載的文件類型才可以,沒有的話下載下來的數(shù)據(jù)是亂的。客戶端查看自己電腦上的文件類型,比如xp系統(tǒng),打開一個文件夾,菜單中,工具,文件夾選項,文件類型,針對某個文件類型可以查看高級中的配置。另一種就是用流來進行下載,簡單代碼如下:

          public ActionForward downloadFile(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response)
                      
          throws Exception {
                  BufferedInputStream bis 
          = null;
                  BufferedOutputStream bos 
          = null;
                  OutputStream fos 
          = null;
                  InputStream fis 
          = null;

                  File downloadFile 
          = null;
                  String dmpFolder 
          = request.getSession().getServletContext()
                          .getRealPath(
          "")
                          
          + "\\files\\downloads\\";
                  File folder 
          = new File(dmpFolder);
                  File[] files 
          = folder.listFiles();
                  String fileName 
          = request.getParameter("fileName");
                  
          for (int i = 0; i < files.length; i++{
                      
          if (files[i].getName().equals(fileName)) {
                          downloadFile 
          = files[i];
                          
          break;
                      }

                  }

                  fis 
          = new FileInputStream(downloadFile);
                  bis 
          = new BufferedInputStream(fis);
                  fos 
          = response.getOutputStream();
                  bos 
          = new BufferedOutputStream(fos);
                  response.setHeader(
          "Content-disposition""attachment;filename="
                          
          + URLEncoder.encode(fileName, "utf-8"));
                  
          int bytesRead = 0;
                  
          byte[] buffer = new byte[8192];
                  
          while ((bytesRead = bis.read(buffer, 08192)) != -1{
                      bos.write(buffer, 
          0, bytesRead);
                  }

                  bos.flush();
                  fis.close();
                  bis.close();
                  fos.close();
                  bos.close();
                  
          return null;
              }
          posted on 2010-06-08 18:16 Jakin.zhou 閱讀(185) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 邵东县| 莫力| 精河县| 旬阳县| 霍邱县| 怀化市| 潼南县| 美姑县| 浦江县| 罗田县| 新绛县| 虹口区| 辛集市| 惠水县| 临海市| 堆龙德庆县| 祁连县| 伊川县| 舟曲县| 安陆市| 临泽县| 辽中县| 从化市| 巴林右旗| 崇左市| 怀柔区| 延寿县| 深圳市| 湘阴县| 梧州市| 乐山市| 美姑县| 那坡县| 深圳市| 济宁市| 克山县| 霸州市| 石泉县| 古田县| 大同县| 从江县|