Servlet——实现文件的下载
浏览器通常会直接处理响应的实体内容。当我们需要在HTTP响应消息中设置这两个响应消息头字段,来指定接收程序处理数据内容的方式为下载方式,当单击“下载”超链接时,系统将请求提交到对应的Servlet。
下面是一些相关 实现文件下载的代码
。
// 设置两个响应消息头字段
resp.addHeader("Content-Disposition","attachment;filename=1.jpg");//设置文件名
resp.addHeader("Content-Type","application/x-msdownload");//设置文件类型
创建二进制写入数据响应的流,便于后面写入文件的数据:
ServletOutputStream os = resp.getOutputStream();
获取下载文件的地址,并根据该地址创建文件字节输入流,然后通过该流读取下载文件内容,最后将读取的内容通过输出流写到目标文件中。
// 获取文件的路径
String path=req.getServletContext().getRealPath("/img");
File file=new File(path,"1.jpg");
//创建文件字节输入流
InputStream is=new FileInputStream(file);
通过创建的字节数组,读取输入流和写进输出流,并将得到的输出流结果回送到浏览器中。
byte[] b = new byte[1024*1024];
int num = 0;
whi