java之excel模板下載

下載excel

	@RequestMapping("/downLoad")
	public void downLoad(HttpServletRequest req,HttpServletResponse res){
		//獲取要下載的模板名稱
		String fileName = req.getParameter("fileName");
		//設置要下載的文件的名稱
		res.setHeader("Content-disposition","attachment;fileName="+fileName);
		//通知客服文件的MIME類型
		res.setContentType("application/vnd.ms-excel;charset=UTF-8");
		//獲取文件的路徑
		String filePath = req.getSession().getServletContext().getRealPath("/WEB-INF/file")+"/"+fileName;
		filePath = filePath.replace("\\", "/");
		InputStream input = null;
		OutputStream out =null;
		try {
			input = new FileInputStream(filePath);
			out =res.getOutputStream();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		byte[] b = new byte[2048];
		int len;
		try {
			while((len=input.read(b))!=-1){
				out.write(b,0,len);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	} 


String filePath = request.getSession().getServletContext().getRealPath("/WEB-INF/file")+"/"+fileName;
filePath = filePath.replace("\\", "/");
解析:request.getSession().getServletContext() 獲取的是Servlet容器對象,相當於tomcat容器了。
getRealPath("/") 獲取實際路徑,在上面代碼中獲取的是獲取WEB-INF下file文件的路徑。第一個'/'代表根目錄。
所以filePath獲取的是templet.xlsx的路徑。


response.setHeader("Content-disposition","attachment;fileName="+fileName);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
解析:ContentType的作用是讓服務器告訴瀏覽器它發送的數據是什麼文件類型,這裏的vnd.ms-excel是指excel文件。
設置 Content-Disposition 告訴瀏覽器下載文件的名稱。當爲attachment時表示作爲附件下載,當爲inline時,表示瀏覽器內嵌顯示一個文件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章