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。

猜你喜欢

转载自blog.csdn.net/diaobaaiqiqi/article/details/82862506