文件下载的步骤
1.获取文件名称
String filename = request.getParameter("filename");
2.使用字节输入流加载文件进内存
2.1找到文件服务器路径
ServletContext context = this.getServletContext();
String path = context.getRealPath("/img"+filename)
//使用字节流关联//输入流读取
FileInputStream in = new FileInputStream(path)
3.设置response响应头
3.1设置响应头类型content-type
String mimeType = context.getMimeType(filname)//获取文件的mime类型
3.2设置响应头打开方式:content-disposition
response.setHeader("content-disposition","attachment;filename="+filename);
response.setHeader("content-disposition","attachment;filename="+filename);
4.将输入流的数据写出到输出流中
ServletOutputStream sos = response.getOutputStream();
byte[] buff = new byte[1024 * 8];
int len = 0;
while((len = fis.read(buff)) != -1){
sos.write(buff,0,len);
}
fis.close();
如果文件中有中文则则会出现乱码
下面就是解决乱码的方式:
在 设置响应头的打开方式代码的上面:
response.setHeader("content-disposition","attachment;filename="+filename);
添加代码
使用工具类
第一步:
第二步:
|
|