From f9acca94bd913c3e155dc86245df372910f8d76e Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期二, 09 九月 2025 14:46:39 +0800 Subject: [PATCH] 视频下载问题以及文档 --- src/main/java/com/mindskip/xzs/controller/common/UploadController.java | 47 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/common/UploadController.java b/src/main/java/com/mindskip/xzs/controller/common/UploadController.java index 078ef2c..406c700 100644 --- a/src/main/java/com/mindskip/xzs/controller/common/UploadController.java +++ b/src/main/java/com/mindskip/xzs/controller/common/UploadController.java @@ -12,10 +12,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.HashMap; import java.util.UUID; @@ -85,16 +84,40 @@ throw new RuntimeException("鏂囦欢涓嶅瓨鍦�"); } - // 璇诲彇鏂囦欢鍐呭 - byte[] fileContent = Files.readAllBytes(file.toPath()); - - // 璁剧疆鍝嶅簲澶� - response.setHeader("Content-Disposition", "attachment; filename=" + fileName); + String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setContentLengthLong(file.length()); // 璁剧疆鏂囦欢澶у皬锛屼究浜庢祻瑙堝櫒鏄剧ず杩涘害 - // 灏嗘枃浠跺唴瀹瑰啓鍏ュ搷搴旇緭鍑烘祦 - response.getOutputStream().write(fileContent); - response.getOutputStream().flush(); + + // 娴佸紡浼犺緭锛氫娇鐢ㄧ紦鍐叉祦鍒嗗潡璇诲啓锛岄伩鍏嶄竴娆℃�у姞杞芥暣涓枃浠跺埌鍐呭瓨 + try (InputStream in = new BufferedInputStream(new FileInputStream(file)); + OutputStream out = new BufferedOutputStream(response.getOutputStream())) { + + byte[] buffer = new byte[8192]; // 8KB缂撳啿鍖� + int len; + // 寰幆璇诲彇鏂囦欢鍐呭锛屾瘡娆¤8KB锛屽啓鍏ュ搷搴旇緭鍑烘祦 + while ((len = in.read(buffer)) != -1) { + out.write(buffer, 0, len); + } + out.flush(); // 纭繚鏈�鍚庝竴閮ㄥ垎鏁版嵁琚啓鍑� + } catch (IOException e) { + throw new RuntimeException("鏂囦欢涓嬭浇澶辫触", e); + } + + +// // 璇诲彇鏂囦欢鍐呭 +// byte[] fileContent = Files.readAllBytes(file.toPath()); +// +// // 璁剧疆鍝嶅簲澶� +// response.setHeader("Content-Disposition", "attachment; filename=" + fileName); +// response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); +// +// +// +// // 灏嗘枃浠跺唴瀹瑰啓鍏ュ搷搴旇緭鍑烘祦 +// response.getOutputStream().write(fileContent); +// response.getOutputStream().flush(); } } -- Gitblit v1.8.0