From be3a121c0901e7c31bd2d30ac3befa74197c8c35 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 7 Aug 2024 19:53:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20FileUploadUtils=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B8=8B=E8=BD=BD=E9=87=8D=E8=BD=BD=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/web/util/FileUploadUtils.java | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/continew-starter-web/src/main/java/top/continew/starter/web/util/FileUploadUtils.java b/continew-starter-web/src/main/java/top/continew/starter/web/util/FileUploadUtils.java index 2bb3dc79..7d651b66 100644 --- a/continew-starter-web/src/main/java/top/continew/starter/web/util/FileUploadUtils.java +++ b/continew-starter-web/src/main/java/top/continew/starter/web/util/FileUploadUtils.java @@ -21,7 +21,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.util.IdUtil; -import jakarta.servlet.http.HttpServletRequest; +import cn.hutool.core.util.URLUtil; import jakarta.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,8 +29,8 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.io.FileInputStream; +import java.io.*; +import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; /** @@ -83,27 +83,29 @@ public class FileUploadUtils { /** * 下载 * - * @param request 请求对象 - * @param response 响应对象 - * @param file 文件 - * @param autoDelete 下载后自动删除 + * @param response 响应对象 + * @param file 文件 */ - public static void download(HttpServletRequest request, - HttpServletResponse response, - File file, - boolean autoDelete) { - response.setCharacterEncoding(request.getCharacterEncoding()); + public static void download(HttpServletResponse response, File file) throws IOException { + download(response, new FileInputStream(file), file.getName()); + } + + /** + * 下载 + * + * @param response 响应对象 + * @param inputStream 文件流 + * @param fileName 文件名 + * @since 2.5.0 + */ + public static void download(HttpServletResponse response, + InputStream inputStream, + String fileName) throws IOException { + byte[] bytes = IoUtil.readBytes(inputStream); + response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName()); - try (FileInputStream fis = new FileInputStream(file)) { - IoUtil.copy(fis, response.getOutputStream()); - response.flushBuffer(); - } catch (Exception e) { - log.error(e.getMessage(), e); - } finally { - if (autoDelete) { - file.deleteOnExit(); - } - } + response.setContentLength(bytes.length); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLUtil.encode(fileName)); + IoUtil.write(response.getOutputStream(), true, bytes); } }