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

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

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

    posts - 495,comments - 227,trackbacks - 0

              jsp中實現文件下載的最簡單的方式是在網頁上做超級鏈接,如:<a href="music/abc.mp3">點擊下載</a>。但是這樣服務器上的目錄資源會直接暴露給最終用戶,會給網站帶來一些不安全的因素。因此可以采用其它方式實現下載,可以采用:1、RequestDispatcher的方式進行;2、采用文件流輸出的方式下載。

    1、采用RequestDispatcher的方式進行

                jsp頁面中添加如下代碼:
               <%
          response.setContentType("application/x-download");//設置為下載application/x-download
          String filedownload = "/要下載的文件名";//即將下載的文件的相對路徑
          String filedisplay = "最終要顯示給用戶的保存文件名";//下載文件時顯示的文件保存名稱
          filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
          response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
        
          try
          {
              RequestDispatcher dis = application.getRequestDispatcher(filedownload);
              if(dis!= null)
              {
                  dis.forward(request,response);
              }
              response.flushBuffer();
          }
          catch(Exception e)
          {
              e.printStackTrace();
          }
          finally
          {
        
          }
    %>

    2、采用文件流輸出的方式下載

             <%@page language="java" contentType="application/x-msdownload"    pageEncoding="gb2312"%><%
          //關于文件下載時采用文件流輸出的方式處理:
          //加上response.reset(),并且所有的%>后面不要換行,包括最后一個

          response.reset();//可以加也可以不加
          response.setContentType("application/x-download");
          String filedownload = "想辦法找到要提供下載的文件的物理路徑+文件名";
          String filedisplay = "給用戶提供的下載文件名";
          filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
          response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);

          OutputStream outp = null;
          FileInputStream in = null;
          try
          {
              outp = response.getOutputStream();
              in = new FileInputStream(filenamedownload);

              byte[] b = new byte[1024];
              int i = 0;

              while((i = in.read(b)) > 0)
              {
                  outp.write(b, 0, i);
              }
              outp.flush();
          }
          catch(Exception e)
          {
              System.out.println("Error!");
              e.printStackTrace();
          }
          finally
          {
              if(in != null)
              {
                  in.close();
                  in = null;
              }
              if(outp != null)
              {
                  outp.close();
                  outp = null;
              }
          }
    %>

    在wsad里面寫JSP文件下載,總是出現這個異常,getOutputStream() has already been called for this response,輸出流已經被調用了.

          上網查半天終于明白一點,JSP早下載文件的時候用到了OutputStream,而在Application Server在處理編譯jsp時對于%>和<%之間的內容一般是原樣輸出,而且默認是PrintWriter.

    posted on 2008-01-17 17:10 SIMONE 閱讀(34445) 評論(7)  編輯  收藏 所屬分類: JAVAJSP

    FeedBack:
    # re: jsp中文件下載的實現[未登錄]
    2011-09-14 08:54 | 123
    就知道抄 全是錯的還不知道  回復  更多評論
      
    # re: jsp中文件下載的實現
    2011-12-15 15:27 | lisatisfy
    filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
    filenamedisplay 應該是filedisplay
    application.getRequestDispatcher(filedownload);
    application最好改成request  回復  更多評論
      
    # re: jsp中文件下載的實現
    2012-04-28 09:37 |
    application.getRequestDispatcher(filedownload);
    application最好改成request




    改成request后出現的成了提交的jsp頁面,而不是我要的文件啊  回復  更多評論
      
    # re: jsp中文件下載的實現[未登錄]
    2013-04-17 17:40 | haha
    @123
    +1+1+1+1  回復  更多評論
      
    # re: jsp中文件下載的實現[未登錄]
    2014-01-27 17:08 | gaga
    大概過程明白  回復  更多評論
      
    # re: jsp中文件下載的實現
    2014-11-01 01:09 | afsd
    是的噶的發送到  回復  更多評論
      
    # re: jsp中文件下載的實現
    2014-11-25 12:01 | 阿大是大非說
    能不能不禍害人??  回復  更多評論
      
    主站蜘蛛池模板: 毛片基地免费观看| 久久免费的精品国产V∧| 性色av无码免费一区二区三区| 亚洲AV无码成人网站久久精品大| a一级爱做片免费| 久久亚洲国产成人精品无码区| 一级毛片免费毛片毛片| 久久精品国产亚洲一区二区三区| 免费无码专区毛片高潮喷水| 久久精品国产精品亚洲人人| 99久久精品毛片免费播放| 久久青草亚洲AV无码麻豆| 2021在线永久免费视频| 亚洲熟女综合色一区二区三区| 热99re久久免费视精品频软件 | 在线观看无码AV网站永久免费| 亚洲av永久综合在线观看尤物| 久久久久免费看黄A片APP| 亚洲欧美日韩一区二区三区 | 亚洲一线产品二线产品| 成人免费a级毛片| 最新亚洲人成网站在线观看 | 国产偷国产偷亚洲高清在线| 亚洲AⅤ永久无码精品AA| 成在线人免费无码高潮喷水| 中文字幕亚洲综合久久2| 18禁成年无码免费网站无遮挡| 高潮内射免费看片| 亚洲成AV人片在| 日韩精品福利片午夜免费观着| 国产成人精品久久亚洲高清不卡| 丝袜熟女国偷自产中文字幕亚洲| 最近中文字幕完整版免费高清| 亚洲中文字幕久久久一区| 国产成人综合亚洲亚洲国产第一页 | 91精品国产免费久久国语蜜臀| 亚洲久悠悠色悠在线播放| 亚洲精品综合久久| 69式国产真人免费视频| 污视频网站在线观看免费| 亚洲精品天天影视综合网|