Browse Source

fix bug:兼容旧文件获取svg文件的逻辑

lijie 3 years ago
parent
commit
71571680e5

+ 2 - 2
dmp-cloud/dmp-file/pom.xml

@@ -17,10 +17,10 @@
             <groupId>com.persagy</groupId>
             <artifactId>integrated-config-client</artifactId>
         </dependency>
-        <dependency>
+        <!--<dependency>
             <groupId>com.persagy</groupId>
             <artifactId>integrated-redis-spring-boot-starter</artifactId>
-        </dependency>
+        </dependency>-->
         <!-- 项目启动 -->
         <dependency>
             <groupId>com.persagy</groupId>

+ 7 - 2
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/controller/CompatibleOldFileController.java

@@ -137,8 +137,13 @@ public class CompatibleOldFileController {
      */
     @GetMapping(value = "/common/image_get")
     public void imageGet(HttpServletResponse response) {
-        compatibleOldFileService.getFile(response);
         response.setContentType("image/jpg");
+        // 兼容获取svg内容
+        if (StrUtil.isNotBlank(OldFileAppContext.getContext().getKey())
+                && OldFileAppContext.getContext().getKey().endsWith(FileCommonConst.SVG_FILE_SUFFIX)){
+            response.setContentType("text/xml");
+        }
+        compatibleOldFileService.getFile(response);
     }
     /***
      * Description: 图片下载
@@ -147,8 +152,8 @@ public class CompatibleOldFileController {
      */
     @GetMapping(value = "/common/svg_get")
     public void imageSvgGet(HttpServletResponse response) {
-        compatibleOldFileService.getFile(response);
         response.setContentType("image/svg+xml");
+        compatibleOldFileService.getFile(response);
     }
     /***
      * Description: 图片下载

+ 0 - 18
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/controller/FileMigrateController.java

@@ -1,35 +1,17 @@
 package com.persagy.dmp.file.controller;
 
 import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.thread.ThreadUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.persagy.common.lock.Lock;
-import com.persagy.dmp.common.constant.ResponseCode;
-import com.persagy.dmp.common.exception.BusinessException;
-import com.persagy.dmp.common.lang.PsDateTime;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
-import com.persagy.dmp.file.model.FileInfo;
-import com.persagy.dmp.file.model.FileInfoCreator;
 import com.persagy.dmp.file.service.FileMigrateFactory;
 import com.persagy.dmp.file.service.FileMigrateService;
-import com.persagy.dmp.file.service.IFileService;
-import io.minio.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.*;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.util.*;
 
 /**

+ 28 - 2
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/controller/TestController.java

@@ -98,8 +98,8 @@ public class TestController {
     @SneakyThrows
     public static void main(String[] args) {
         //byte[] streamBytes = FileStorageHelper.getStreamBytes(new FileInputStream(new File("D:\\test\\temp\\20211209_Eq440305000274029fde4b7f459a872d5e15646c285c.png")));
-        byte[] streamBytes = FileStorageHelper.getStreamBytes(new FileInputStream(new File("D:\\test\\temp\\上海国际航空服务中心龙华二期_塔楼_F18_20211206.rvt")));
-        System.out.println(DigestUtil.md5Hex(streamBytes));
+//        byte[] streamBytes = FileStorageHelper.getStreamBytes(new FileInputStream(new File("D:\\test\\temp\\上海国际航空服务中心龙华二期_塔楼_F18_20211206.rvt")));
+//        System.out.println(DigestUtil.md5Hex(streamBytes));
         // 4ee40f88485bcbe9282592d6d97ce6ff
         //EFDDF79F60624752814D8F2A36CD3B9D
 //        MinioClient minioClient=MinioClient.builder()
@@ -127,6 +127,32 @@ public class TestController {
 //        System.out.println(getObjectResponse.read());
         // System.out.println(JSONObject.toJSONString(statObject));
 
+        MinioClient minioClient=MinioClient.builder()
+                .endpoint("http://common.ysbdtp.com",9000,false)
+                .credentials("persagy", "persagy@2021")
+                .region("GM+8")
+                .build();
+//        GetObjectResponse objectResponse = minioClient.getObject(GetObjectArgs.builder()
+//                .bucket("dataplatform")
+//                .object("/20211228/1608088181183.svg")
+//                .region("GM+8")
+//                .build());
+//        minioClient.uploadObject(UploadObjectArgs.builder()
+//                .bucket("dataplatform")
+//                .object("/20211228/1608088181183.svg")
+//                .region("GM+8")
+//                .contentType("text/xml")
+//                .filename("D:\\test\\temp\\20211228_1608088181183.svg")
+//                .build());
+        // Get information of an object.
+        StatObjectResponse statObject = minioClient
+                .statObject(StatObjectArgs.builder()
+                        .bucket("dataplatform")
+                        .object("/20211228/1608088181183.svg")
+                        .region("GM+8")
+                        .build());
+        System.out.println(JSONObject.toJSONString(statObject.contentType()));
+
     }
 
 }

+ 9 - 1
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/service/impl/MinioStorageServiceImpl.java

@@ -20,6 +20,8 @@ import lombok.extern.slf4j.Slf4j;
 import okhttp3.Headers;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.MimeType;
+import org.springframework.util.MimeTypeUtils;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.ByteArrayInputStream;
@@ -160,7 +162,13 @@ public class MinioStorageServiceImpl implements IFileStorageService, Initializin
             if (null!=response){
                 // 添加header
                 Headers headers = objectResponse.headers();
-                headers.names().forEach(name->response.addHeader(name,headers.get(name)));
+                headers.names().forEach(name->{
+                    if (FileCommonConst.REPONSE_HEAD_CONTENT_TYPE.equalsIgnoreCase(name)
+                            && response.containsHeader(FileCommonConst.REPONSE_HEAD_CONTENT_TYPE)){
+                        return;
+                    }
+                    response.addHeader(name,headers.get(name));
+                });
                 if (StrUtil.isNotBlank(realFileName)){
                     response.addHeader(FileCommonConst.REPONSE_HEAD_CONTENT_DISPOSITION, StrUtil
                             .format(FileCommonConst.REPONSE_HEAD_CONTENT_DISPOSITION_ATTACHMENT,

+ 6 - 1
dmp-comp/dmp-file-starter/src/main/java/com/persagy/dmp/file/constant/FileCommonConst.java

@@ -20,12 +20,17 @@ public interface FileCommonConst {
     String BUCKET_PATTERN = "^[a-z0-9][a-z0-9\\-]*[a-z0-9]$";
     /** 分片文件的后缀 */
     String CHUCK_FILE_SUFFIX = ".chunk";
+    /** 分片文件的后缀 */
+    String SVG_FILE_SUFFIX = ".svg";
     /**响应头:Content-disposition*/
     String REPONSE_HEAD_CONTENT_DISPOSITION = "Content-disposition";
     /**响应头:Content-disposition*/
     String REPONSE_HEAD_CONTENT_LENGTH = "Content-Length";
+    /**响应头:Content-disposition*/
+    String REPONSE_HEAD_CONTENT_TYPE = "Content-Type";
     /**响应头:attachment;filename=*/
-    String REPONSE_HEAD_CONTENT_DISPOSITION_ATTACHMENT = "attachment;filename={}";
+    //String REPONSE_HEAD_CONTENT_DISPOSITION_ATTACHMENT = "attachment;filename={}";
+    String REPONSE_HEAD_CONTENT_DISPOSITION_ATTACHMENT = "filename={}";
     /**响应头:minio的查询参数*/
     String RESPONSE_CONTENT_DISPOSITION = "response-content-disposition";
 }