说明:
本文并没有实现动态下载,即前端并没有给后端传参数
前端代码:
<a href="/项目名/homepage/downloadFile">确认下载</a>
后端代码:
public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws URISyntaxException, IOException, InterruptedException {
//获取整个web应用,可以和程序的容器(服务器)通信
ServletContext servletContext = request.getServletContext();
Configuration conf = new Configuration();
String uri="hdfs://192.168.248.147:9000/yttlj/input/1.jpg";
Path _file = new Path(uri);
//获取hdfs对象
FileSystem hdfs = FileSystem.get(URI.create(uri),conf, "root");
//获取输入流
FSDataInputStream fis = hdfs.open(_file);
//设置resposne响应头
//设置响应头类型
String mimeTyep = servletContext.getMimeType("1.jpg");
response.setHeader("content-type",mimeTyep);
//设置响应头打开方式
response.setHeader("content-disposition","attachment;filename="+"1.jpg");
//获取输出流(具体到文件名)
ServletOutputStream out = response.getOutputStream();
//将输入流的数据写出到输出流中
byte[] buf = new byte[1024*8];
int len=0;
while ((len = fis.read(buf))!=-1){
out.write(buf,0,len);
}
//关流
IOUtils.closeStream(fis);
hdfs.close();
System.out.println("OVER");
}