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