JavaWeb中 Resonse下载文件
下载文件操作在JavaWeb十分常见,并且在后面的springboot的学习也会存在下载文件这个功能模块因此需要掌握
对下载文件操作在脑中要有一个清晰的框架步骤:
下载文件需要明白几个步骤:
- 要获取下载文件的路径
- 下载文件的文件名字?
- 设法想办法让浏览器能够支持下载 我们需要的东西
- 获取下载文件的输入流
- 创建缓冲区
- 获取OutputStream对象
- 将FileOutputStream流写入到buff缓冲区,使用OutputStream将缓冲区数据输入到客户端
- 关闭流
//下载文件需要明白几个步骤:
//1. 要获取下载文件的路径
String realPath = "D:\\JavaProgram_base\\javaweb-02-maven\\resources\\src\\main\\resources\\健飞LOL.jpg";
//2. 下载文件的文件名字?
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
//3. 设法想办法让浏览器能够支持下载 我们需要的东西,中文文件名URLEncoder.encode编码,否则乱码
resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
//4. 获取下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
//5. 创建缓冲区
int len = 0;
byte[] buffer = new byte[1024];
//6. 获取OutputStream对象
ServletOutputStream out = resp.getOutputStream();
//7. 将FileOutputStream流写入到buff缓冲区,使用OutputStream将缓冲区数据输入到客户端
while ((len=in.read(buffer))>0){
out.write(buffer,0 ,len );
}
//8. 关闭流
in.close();
out.close();