Servlet實現檔案下載
阿新 • • 發佈:2018-11-08
在瀏覽網站的時候很多涉及到檔案下載的情況,在初學JavaWeb的時候我們如何使用Servlet來實現檔案下載呢?
在學習此之前,我們要知道兩個重要的概念。request和response。請求和相應。
請求:請求頭、請求行、請求體。
相應:相應頭、相應行、相應體。
大家可以上網找一下上面提到的這幾個關鍵點。
下面我們直接上程式碼來演示檔案下載:
將網站提供的圖片複製到專案中src路徑下面;
然後在Servlet中doGet或者doPost方法中提供下面的程式碼:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //通過路徑得到一個輸入流 String path = this.getServletContext().getRealPath("/WEB-INF/classes/111.jpg"); FileInputStream fis = new FileInputStream(path); //建立位元組輸出流 ServletOutputStream sos = response.getOutputStream(); //得到要下載的檔名 String fileName = path.substring(path.lastIndexOf("\\")+1); //設定檔名的編碼,將不安全的檔名改為UTF-8 fileName = URLEncoder.encode(fileName,"UTF-8"); //告知客戶端要下載檔案 response.setHeader("content-disposition","attachment;filename="+fileName); response.setHeader("content-type","image/jpeg"); //執行輸出操作 int len = 1; byte[] buff = new byte[1024]; while((len=fis.read(buff))!=-1){ sos.write(buff,0,len); } //關閉資源 sos.close(); fis.close(); }
web專案部署,通過瀏覽器訪問該servlet。