diff --git a/src/main/java/com/example/myproject/config/WebConfig.java b/src/main/java/com/example/myproject/config/WebConfig.java
index 5564452..6f9322d 100644
--- a/src/main/java/com/example/myproject/config/WebConfig.java
+++ b/src/main/java/com/example/myproject/config/WebConfig.java
@@ -11,5 +11,7 @@
         // 访问 /uploads/** 映射到本地 D:/Desktop/echo/echo-backend/uploads/
         registry.addResourceHandler("/uploads/**")
                 .addResourceLocations("file:D:/PT/echo-backend/uploads/");
+        registry.addResourceHandler("/torrent-images/**")
+                .addResourceLocations("file:./uploads/torrents/");
     }
 }
diff --git a/src/main/java/com/example/myproject/controller/TorrentController.java b/src/main/java/com/example/myproject/controller/TorrentController.java
index cea2ccf..74cb8f9 100644
--- a/src/main/java/com/example/myproject/controller/TorrentController.java
+++ b/src/main/java/com/example/myproject/controller/TorrentController.java
@@ -27,6 +27,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.io.IOException;
 import java.util.List;
 
@@ -86,7 +87,10 @@
     @PostMapping("/upload")
     public Result uploadTorrent(
             @RequestParam("file") MultipartFile file,
-            @ModelAttribute @Validated TorrentUploadParam param) throws IOException {
+            @RequestParam("coverImage") MultipartFile coverImage,
+            @ModelAttribute @Validated TorrentUploadParam param,
+            HttpServletRequest request
+            ) throws IOException {
         try {
             // 验证用户权限
             // Long userId = StpUtil.getLoginIdAsLong();
@@ -101,6 +105,31 @@
             if (!file.getOriginalFilename().toLowerCase().endsWith(".torrent")) {
                 return Result.error("只支持.torrent文件");
             }
+            if (!coverImage.isEmpty()) {
+                String originalFilename = coverImage.getOriginalFilename();
+                String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
+                String fileName = System.currentTimeMillis() + suffix;
+
+                if (!originalFilename.toLowerCase().matches(".*\\.(jpg|jpeg|png)$")) {
+                    return Result.error("仅支持 JPG/PNG 格式的封面图片");
+                }
+
+
+                // 项目根目录下的 /uploads/torrents/
+                String uploadDir = System.getProperty("user.dir") + "/uploads/torrents/";
+                File dir = new File(uploadDir);
+                if (!dir.exists()) dir.mkdirs(); // 自动创建目录
+
+                File dest = new File(uploadDir + fileName);
+                coverImage.transferTo(dest);
+
+
+                String imageUrl = request.getScheme() + "://" + request.getServerName() + ":" +
+                        request.getServerPort() + "/torrent-images/" + fileName;
+
+
+                param.setImageUrl(imageUrl);
+            }
 
             torrentService.uploadTorrent(file, param);
             return Result.ok();
