diff --git a/src/main/java/com/cultural/heritage/controller/file/FileController.java b/src/main/java/com/cultural/heritage/controller/file/FileController.java index 511131c..9e36b7f 100644 --- a/src/main/java/com/cultural/heritage/controller/file/FileController.java +++ b/src/main/java/com/cultural/heritage/controller/file/FileController.java @@ -176,12 +176,22 @@ public class FileController { filename = "feiyi/fonts/" + filename; // 字体路径 String filePath = UPLOAD_DIR + filename; File file = new File(filePath); - // 清空response - response.reset(); +// // 清空response +// response.reset(); // 设置response的Header response.setContentType("application/octet-stream"); - response.addHeader("Content-Disposition", "inline;filename=" + URLEncoder.encode(file.getName(), StandardCharsets.UTF_8)); - response.setCharacterEncoding("UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + file.getName()); + response.setContentLengthLong(file.length()); // 使用 setContentLengthLong 适应大文件 + + // 设置缓存相关的 HTTP 头 + long lastModified = file.lastModified(); + response.setDateHeader("Last-Modified", lastModified); // 文件最后修改时间 + response.setHeader("Cache-Control", "public, max-age=86400"); // 缓存一天(24小时) + response.setHeader("ETag", String.valueOf(lastModified)); // 使用文件最后修改时间作为 ETag + + + + // 使用 BufferedInputStream 和 BufferedOutputStream 提高性能 try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE); BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream(), BUFFER_SIZE)) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1ab53e5..18684a4 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: dev + active: prod