文件放在某个目录下,前端实现文件下载功能:
前端代码:
window
.open('/inCallLog/downloadFile?beginTime='
+ $("#beginTime").val() + '&level='
+ $("#level").val());
后端代码:
/**
* @功能:下载日志文件
*/
@ResponseBody
@GetMapping("/downloadFile")
public void downloadFile(HttpServletResponse response, @RequestParam(required = false) String beginTime, @RequestParam(required = false) String level) {
logService.downloadFile(response, beginTime, level);
}
@Override
public void downloadFile(HttpServletResponse response, String beginTime, String level) {
String path = getPath.getPath();
log.info("--------path:-------" + path);
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String today = formatter.format(date);
if (level.equals("sysRun")) {
if (beginTime != null && beginTime != "" && !beginTime.equals(today)) {
path = "C:/logs/admin-server.log.error." + beginTime + ".0";
} else {
path = "C:/logs/admin-server.log.error";
}
} else if (level.equals("error")){
beginTime = (beginTime == null || beginTime == "")?today:beginTime;
path += "/log/exLog_" + beginTime + ".log";
File tmp = new File(path);
if(!tmp.exists()){
try {
tmp.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//创建文件
}
} else {
beginTime = (beginTime == null || beginTime == "")?today:beginTime;
path += "/log/log_" + beginTime + ".log";
File tmp = new File(path);
if(!tmp.exists()){
try {
tmp.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//创建文件
}
}
try {
downloadFile.downloadFile(response, path);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getPath()
{
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
if(System.getProperty("os.name").contains("dows"))
{
path = path.substring(1,path.length());
}
if(path.contains("jar"))
{
path = path.substring(0,path.lastIndexOf("."));
path = path.substring(0,path.lastIndexOf("/"));
int idx = path.indexOf("/");
path = path.substring(idx + 1, path.length());
return path;
}
return path.replace("target/classes/", "");
}
public void downloadFile(HttpServletResponse response, String path) throws IOException {
int idx = path.lastIndexOf("/");
String name = path.substring(idx + 1, path.length());
InputStream f = new FileInputStream(path);
response.reset();
response.setContentType("application/x-msdownload;charset=utf-8");
try {
response.setHeader("Content-Disposition", "attachment;filename="+ new String((name).getBytes("gbk"), "iso-8859-1"));//下载文件的名称
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ServletOutputStream sout = response.getOutputStream();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(f);
bos = new BufferedOutputStream(sout);
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bos.flush();
bos.close();
bis.close();
} catch (final IOException e) {
throw e;
} finally {
if (bis != null){
bis.close();
}
if (bos != null){
bos.close();
}
}
}