From e33f5c19532aafb18b6d7e9ca4d01af2bfb9f60b Mon Sep 17 00:00:00 2001 From: "ran.shang" <> Date: Wed, 27 Aug 2025 14:21:44 +0800 Subject: [PATCH] fix file download buffer --- .../com/newyetai/component/file/service/IFileStorage.java | 3 ++- .../newyetai/component/file/service/impl/FileServiceImpl.java | 2 +- .../component/file/service/storage/AliFileStorage.java | 4 ++-- .../component/file/service/storage/LocalFileStorage.java | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/newyetai/component/file/service/IFileStorage.java b/src/main/java/com/newyetai/component/file/service/IFileStorage.java index 3b9c6d8..bf9632c 100644 --- a/src/main/java/com/newyetai/component/file/service/IFileStorage.java +++ b/src/main/java/com/newyetai/component/file/service/IFileStorage.java @@ -19,9 +19,10 @@ public interface IFileStorage { * 下载 * @param filePath * @param os + * @param fileSize 文件大小 * @author sr on 2022-03-01 */ - void download(String filePath, OutputStream os); + void download(String filePath, OutputStream os, Long fileSize); /** * @param filePath diff --git a/src/main/java/com/newyetai/component/file/service/impl/FileServiceImpl.java b/src/main/java/com/newyetai/component/file/service/impl/FileServiceImpl.java index 9c1bb4a..5352c83 100644 --- a/src/main/java/com/newyetai/component/file/service/impl/FileServiceImpl.java +++ b/src/main/java/com/newyetai/component/file/service/impl/FileServiceImpl.java @@ -103,7 +103,7 @@ public class FileServiceImpl implements FileService { String.format("attachment; filename=\"%1$s\"; filename*=utf-8''%1$s", encodFilename)); } try (OutputStream outputStream = response.getOutputStream()) { - fileStorage.download(fileRecord.getFilePath(), outputStream); + fileStorage.download(fileRecord.getFilePath(), outputStream, fileRecord.getFileSize()); } } diff --git a/src/main/java/com/newyetai/component/file/service/storage/AliFileStorage.java b/src/main/java/com/newyetai/component/file/service/storage/AliFileStorage.java index e7e9571..b0b9956 100644 --- a/src/main/java/com/newyetai/component/file/service/storage/AliFileStorage.java +++ b/src/main/java/com/newyetai/component/file/service/storage/AliFileStorage.java @@ -65,10 +65,10 @@ public class AliFileStorage implements IFileStorage { } @Override - public void download(String filePath, OutputStream os) { + public void download(String filePath, OutputStream os, Long fileSize) { try(InputStream is = download(filePath)) { try { - IOUtils.copy(is, os); + IOUtils.copy(is, os, fileSize != null ? fileSize.intValue() : 4096); } catch (ClientAbortException e) { log.warn("客户端主动断开连接: {}", e.getMessage()); } diff --git a/src/main/java/com/newyetai/component/file/service/storage/LocalFileStorage.java b/src/main/java/com/newyetai/component/file/service/storage/LocalFileStorage.java index 090f83b..11ce8ac 100644 --- a/src/main/java/com/newyetai/component/file/service/storage/LocalFileStorage.java +++ b/src/main/java/com/newyetai/component/file/service/storage/LocalFileStorage.java @@ -31,9 +31,9 @@ public class LocalFileStorage implements IFileStorage { } @Override - public void download(String filePath, OutputStream os) { + public void download(String filePath, OutputStream os, Long fileSize) { try (InputStream inputStream = download(filePath)) { - IOUtils.copy(inputStream, os); + IOUtils.copy(inputStream, os, fileSize != null ? fileSize.intValue() : 4096); } catch (IOException e) { log.info("下载异常", e); throw new BusinessException("下载异常" + e.getMessage());