From 43b6292b4b2810560bbf2d22c96bd44c11d4160b Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Mon, 22 Jul 2024 10:29:06 +0800
Subject: [PATCH] 将文件获取后压缩在服务器

---
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java |   46 ++++++++++++++++++++++++++++------------------
 1 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index 3b944e5..c1d2c61 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -22,6 +22,7 @@
 import com.dji.sample.media.model.*;
 import com.dji.sample.media.service.IFileService;
 import com.dji.sample.media.util.ImgUtil;
+import com.dji.sample.media.util.MinioFileDownloader;
 import com.dji.sample.patches.dao.GetPatchesMapper;
 import com.dji.sample.patches.model.entity.LotInfo;
 import com.dji.sample.patches.utils.DistrictCodeUtils;
@@ -432,26 +433,35 @@
     }
 
     @Override
-    public void downloadImages(String jobId, HttpServletResponse response) {
-        String address = pojo.getEndpoint() + "/" + pojo.getBucket();
-        List<MediaFileEntity> entities = getMedia(jobId);
-        List<String> urls = entities.stream()
-                .map(MediaFileEntity::getObjectKey)
-                .map(objectKey -> address + objectKey)
-                .collect(Collectors.toList());
-        String outputFolder = "images"; // 存放图片的文件夹
-        new File(outputFolder).mkdirs(); // 创建文件夹
+    public ResponseResult downloadImages(List<String> jobIds) {
         try {
-            downloadAndSaveImages(urls, outputFolder);
-            zipAndSendFolder(outputFolder, response);
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-        } finally {
-            cleanUp(outputFolder);
-        }
-    }
+            String bucketPath = "/data/software/minio-data/cloud-bucket/";
+            List<String> prefixes = getUniqueFilePaths(jobIds);
 
+            MinioFileDownloader downloader = new MinioFileDownloader(bucketPath);
+
+            // 下载并压缩文件到本地目录
+            String localSaveDir = "/data/software/minio-data/zip-bucket/"; // 修改为你想保存的本地目录
+            downloader.downloadAndZipFolders(prefixes, localSaveDir);
+
+            System.out.println("压缩文件已保存到:" + localSaveDir);
+
+        }  catch (Exception e) {
+            e.printStackTrace();
+            return ResponseResult.error("下载失败"+e.getMessage());
+        }
+        return ResponseResult.success("下载成功");
+    }
+    @Override
+    public List<String> getUniqueFilePaths(List<String> jobIds) {
+        return mapper.selectList(
+                        new LambdaQueryWrapper<MediaFileEntity>()
+                                .in(MediaFileEntity::getJobId, jobIds))
+                .stream()
+                .map(MediaFileEntity::getFilePath)
+                .distinct()
+                .collect(Collectors.toList());
+    }
     @Override
     public List<MediaFileDTO> getFilesByWorkspaceAndJobId(String workspaceId, String jobId) {
         return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()

--
Gitblit v1.9.3