入参filePath 可从数据库查询获取
需要封装此方法
public void downLoad(String filePath, HttpServletResponse response) throws Exception {
File file = new File(filePath);
//判断文件是否存在
if(!file.exists()){
log.error("getOutputStream--> file:{} is not exist!",filePath);
throw new Exception("getOutputStream--> file:"+filePath+" is not exist!");
}
InputStream is = null;
BufferedInputStream bis = null;
OutputStream os = null;
BufferedOutputStream bos = null;
try{
is = new FileInputStream(file);
bis = new BufferedInputStream(is);
byte[] temp = new byte[1024];
int i=0;
//设置响应的类型
response.setContentType(MediaType.MULTIPART_FORM_DATA_VALUE);
//设置响应的编码格式
response.setCharacterEncoding("utf8");
//设置响应头
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(),"UTF-8"));
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "max-age=0");
os = response.getOutputStream();
bos = new BufferedOutputStream(os);
while ((i=bis.read(temp))!=-1){
bos.write(temp,0,i);
}
bos.flush();
}catch (Exception e){
throw e;
}finally {
closeStream(bos,os,bis,is);
}
}