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

檔案下載java程式碼實現

昨天晚上寫了個檔案上傳,今天想弄弄檔案的下載。收到檔案下載,我們還是先理一理思路。

檔案下載其實說多了就是從伺服器中(你部署的專案中)讀取出資原始檔,然後通過response返回給客戶端。其實tomcat已經對檔案上傳有很好的封裝了,我們只需要知道需要下載的檔案路徑和檔案位元組流就能夠輕鬆地實現檔案下載功能。不多說了,直接上程式碼

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String name = request.getParameter("filename");
		//獲取檔案的絕對路徑
		String path = request.getServletContext().getRealPath("WEB-INF/download/"+name);
		System.out.println(path);
		//設定檔案的MIME型別
		response.setContentType(getServletContext().getMimeType(name));
		//設定響應標頭檔案,標識為檔案下載型別,並附上檔案的名稱
		response.setHeader("Content-Disposition", "attachment;filename="+name);
	
		//對檔案進行讀取和存貯
		InputStream is = new FileInputStream(path);
		OutputStream os = response.getOutputStream();
		byte[] flush = new byte[1024];
		int len = 0;
		while((len = is.read(flush))!=-1){
			os.write(flush,0,len);
			os.flush();
		}
		is.close();
	}
其中還有一種檔案下載的方式,而且賊簡單。就是直接以超連結的形式指定到你的檔案,客戶端點選檔案之後,就會自動下載。不過這種方式也有弊端,如果是瀏覽器識別的檔案,瀏覽器會直接開啟,而不會下載。程式碼如下:
<body>
	<a href = "檔案路徑">超連結實現下載</a><br/>
	<a href ="DownLoadServlet?filename=1.xls" >放假通知表!</a>
</body>


最後還有一點稍微提一下,本人在實現上述程式碼的過程中,還真遇到了一些問題。由於是剛剛裝的tomcat很多配置沒有修改,出現了路徑讀取錯誤。其實原因很簡單,就是部署的專案不再tomcat中,而是在eclipse的.metadata\.plugins\org.eclipse.wst.server.core\目錄下。其實按理說,以eclipse的部署路徑也是不會出錯的,但是誰叫本人粗心呢。。download的資料夾目錄不再webContent下。

好了,說的問題其實也不是問題,但是能夠因為自己的小問題了解到了tomcat的配置一些細節,也算是有所收穫。但願大家也能夠在閱讀這篇文章之後有所收穫大笑。如果有什麼問題,還望能夠一起探討,大家共同進步!