-JavaEE- javaEE中實現文件上傳下載

第一種方法:

jsp中實現文件下載的最簡單的方式是在網頁上作超級連接,如:<a href="music/abc.mp3">點擊下載</a>。可是這樣服務器上的目錄資源會直接暴露給最終用戶,會給網站帶來一些不 安全的因素。java

第二種方法:採用RequestDispatcher的方式進行

 jsp頁面中添加以下代碼:安全

  <%服務器

      String filedownload = "/要下載的文件名";     //即將下載的文件的相對路徑app

      String filedisplay = "最終要顯示給用戶的保存文件名";       //下載文件時顯示的文件保存名稱jsp

      filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");網站

       response.setContentType("application/x-download");          //設置爲下載application/x-downloadspa

      response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);.net

   

      trycode

      {ci

          RequestDispatcher dis = application.getRequestDispatcher(filedownload);

          if(dis!= null)

          {

              dis.forward(request,response);

          }

          response.flushBuffer();

      }

      catch(Exception e)

      {

          e.printStackTrace();

      }

      finally

      {

    

      }

%>

注意:

1.String filenamedownload = "/Word/做文.doc";指的是即將下載的文件的相對路徑,表示做文.doc文件放在工程下的Word文件夾內,必定要注意"/Word/做文.doc",Word前面必定要有「/」,不能寫成String filenamedownload = "Word/做文.doc";

2.RequestDispatcher下載方式更爲簡單,可是缺點在於:下載的文件必須放在工程的內部,application.getRequestDispatcher()方法的參數也必須是相對路徑。

 

 

 <%@page language="java" contentType="application/x-msdownload"    pageEncoding="gb2312"%>

<%

      //關於文件下載時採用文件流輸出的方式處理:

      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;

          }

      }

%>

相關文章
相關標籤/搜索