欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Servlet实现文件下载

程序员文章站 2022-05-24 14:34:51
...

在浏览网站的时候很多涉及到文件下载的情况,在初学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。