1. 程式人生 > >Servlet實現檔案下載

Servlet實現檔案下載

在瀏覽網站的時候很多涉及到檔案下載的情況,在初學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。