本代码仅适用单节点!
@ApiOperation(value = "获取所有服务器日志") // Swagger API 文档注解
@GetMapping("/getServerLog") // 建议Get请求,可直接浏览器拼接地址栏
public void getLogZip(HttpServletResponse response) throws Exception {
String property = System.getProperty("user.dir"); // 获取当前项目的运行位置
log.info("当前项目运行位置是:{}", property); // 记录当前项目的运行位置
String logPath = property + "/AH.xlsx"; // 你的日志文件路径,可以具体到某个文件,也可以精确到文件夹
File logFile = new File(logPath); // 创建代表日志文件的 File 对象
if (logFile.exists()) { // 检查日志文件是否存在
File zip = null; // 声明一个用于存储压缩文件的变量
try {
zip = ZipUtil.zip(logFile); // 使用 ZipUtil 类对日志文件进行压缩
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zip.getName(), "UTF-8")); // 设置响应头,告诉浏览器将响应内容作为附件下载,并指定下载文件的名称
response.setContentType("application/octet-stream"); // 设置响应的内容类型为 application/octet-stream,表示响应内容是一个二进制流
IoUtil.write(response.getOutputStream(), false, FileUtil.readBytes(zip)); // 将压缩后的日志文件内容写入到 HttpServletResponse 的输出流中,从而向客户端发送文件内容
} finally {
if (zip != null) {
zip.delete(); // 删除临时的压缩文件
}
}
}
}
至于文件夹加密的问题,由于 HTTP 协议本身不提供对文件夹的加密支持,因此无法在代码中直接实现文件夹加密。一般情况下,需要在客户端或服务器端使用加密算法和密码学技术对文件夹中的文件进行加密,然后将加密后的文件打包成一个加密的压缩文件,再进行下载。在客户端下载后,用户需要提供解密密钥或密码来还原文件夹结构。
特殊说明: 上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com 第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤