本代码仅适用单节点!

下载日志 - 暗门。依赖于Hutool的IO包

@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()) {
        response.sendError(HttpServletResponse.SC_NOT_FOUND, "日志文件不存在"); // 返回404错误
        return;
    }

    File zip = null; // 声明压缩文件变量
    try {
        zip = ZipUtil.zip(logFile); // 压缩日志文件
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zip.getName(), StandardCharsets.UTF_8)); // 设置响应头
        response.setContentType("application/octet-stream"); // 设置内容类型

        // 将压缩文件内容写入响应输出流
        try (OutputStream outputStream = response.getOutputStream()) {
            IoUtil.write(outputStream, false, FileUtil.readBytes(zip));
        }
    } catch (IOException e) {
        log.error("文件处理异常", e); // 记录异常信息
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "文件处理失败"); // 返回500错误
    } finally {
        if (zip != null && zip.exists()) {
            zip.delete(); // 删除临时压缩文件
        }
    }
}

至于文件夹加密的问题,由于 HTTP 协议本身不提供对文件夹的加密支持,因此无法在代码中直接实现文件夹加密。一般情况下,需要在客户端或服务器端使用加密算法和密码学技术对文件夹中的文件进行加密,然后将加密后的文件打包成一个加密的压缩文件,再进行下载。在客户端下载后,用户需要提供解密密钥或密码来还原文件夹结构。

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤