Переглянути джерело

添加对 sha256sum 重复文件的处理

reghao 2 роки тому
батько
коміт
6147a887eb

+ 10 - 8
dfs-store/src/main/java/cn/reghao/dfs/store/service/PutObjectService.java

@@ -39,14 +39,10 @@ public class PutObjectService {
         String objectName = objectProp.getObjectName();
         FileMeta fileMeta = objectRepository.getBySha256sum(sha256sum);
         if (fileMeta != null) {
-            log.error("{} 已存在", sha256sum);
-            //copyObject(objectProp, originalFilename, fileMeta);
             FileUtils.deleteQuietly(savedFile);
-
-            /*String objectId = objectRepository.getByObjectName(objectName).getObjectId();
-            String url = objectNameService.getObjectUrl(objectName);
-            return new ObjectResult(objectName, objectId, ObjectType.Other.getCode(), "", url);*/
-            return null;
+            log.error("{} 已存在", sha256sum);
+            ObjectResult objectResult = copyObject(objectProp, originalFilename, fileMeta);
+            return objectResult;
         } else {
             String savedPath = savedFile.getAbsolutePath();
             long size = savedFile.length();
@@ -89,12 +85,18 @@ public class PutObjectService {
         }
     }
 
-    public void copyObject(ObjectProp objectProp, String filename, FileMeta fileMeta) {
+    public ObjectResult copyObject(ObjectProp objectProp, String filename, FileMeta fileMeta) {
+        String existObjectId = fileMeta.getObjectId();
+        int fileType = fileMeta.getFileType();
+        String savedPath = "";
         String objectName = objectProp.getObjectName();
         String objectId = UUID.randomUUID().toString().replace("-", "");
         boolean diskFile = objectProp.isDiskFile();
         int acl = objectProp.getAcl();
         FileMeta fileMeta1 = new FileMeta(objectName, objectId, filename, fileMeta, diskFile, acl);
         objectRepository.saveFileMeta(fileMeta1);
+
+        String url = objectNameService.getObjectUrl(objectName);
+        return new ObjectResult(objectName, objectId, fileType, savedPath, url);
     }
 }

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/task/ConvertTask.java

@@ -38,7 +38,7 @@ public class ConvertTask implements Runnable {
     public void run() {
         String filename = String.format("%s.mp4", UUID.randomUUID().toString().replace("-", ""));
         String destPath = String.format("/opt/tmp/tomcat/%s", filename);
-        FFmpegWrapper.formatCovert(absolutePath, destPath);
+        FFmpegWrapper.formatCovert(absolutePath, destPath, "mp4");
         String objectName = String.format("video/playback/%s/%s", videoFileId, filename);
         try {
             String url = objectNameService.getObjectUrl(objectName);

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/task/VideoFileProcessor.java

@@ -108,7 +108,7 @@ public class VideoFileProcessor {
                 throw new IOException(absolutePath + " exist");
             }
 
-            int ret = FFmpegWrapper.formatCovert(file.getAbsolutePath(), absolutePath);
+            int ret = FFmpegWrapper.formatCovert(file.getAbsolutePath(), absolutePath, "mp4");
             if (ret != 0) {
                 throw new Exception("视频转码失败");
             }