From 77f99800075afbfe398d1e9b8b567407ff9f539b Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 06 三月 2024 17:36:30 +0800
Subject: [PATCH] minio文件上传实现

---
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java     |   50 ++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java   |   15 +
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java             |   95 ++++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java            |   27 ++
 dujy-modules/dujy-demo/pom.xml                                                           |    2 
 dujy-admin/src/main/resources/application-dev.yml                                        |    7 
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java       |   22 ++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java                |  314 ++++++++--------------------
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java            |   43 +++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java         |   68 ++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java |   14 +
 11 files changed, 426 insertions(+), 231 deletions(-)

diff --git a/dujy-admin/src/main/resources/application-dev.yml b/dujy-admin/src/main/resources/application-dev.yml
index c8a4d27..3215e6e 100644
--- a/dujy-admin/src/main/resources/application-dev.yml
+++ b/dujy-admin/src/main/resources/application-dev.yml
@@ -278,7 +278,6 @@
       client-secret: 1f7d08**********5b7**********29e
       redirect-uri: ${justauth.address}/social-callback?source=gitlab
 minio:
-  endpoint: http://127.0.0.1:9000
-  accessKey: UqCoWBRAVf7DI1gcznSg
-  secretKey: UL4hmEIcgFpTmSaJEpYTiQDIWHEG4RavPxTyMjgX
-  bucketName: dujyimage
+  url: http://127.0.0.1:9000
+  access-key: root
+  secret-key: root1234
diff --git a/dujy-modules/dujy-demo/pom.xml b/dujy-modules/dujy-demo/pom.xml
index e85885e..e0ad3dd 100644
--- a/dujy-modules/dujy-demo/pom.xml
+++ b/dujy-modules/dujy-demo/pom.xml
@@ -127,7 +127,7 @@
         <dependency>
             <groupId>io.minio</groupId>
             <artifactId>minio</artifactId>
-            <version>8.4.3</version>
+            <version>7.0.2</version>
         </dependency>
 
 
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java
new file mode 100644
index 0000000..70a28a0
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileController.java
@@ -0,0 +1,50 @@
+package org.dromara.demo.controller;
+
+import org.dromara.demo.domain.MinioResult;
+import org.dromara.demo.domain.dto.FileDTO;
+import org.dromara.demo.domain.dto.MinioVideoResult;
+import org.dromara.demo.domain.dto.Result;
+import org.dromara.demo.util.MinioUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Objects;
+
+/**
+ * @author Satori
+ * @date 2021/10/15
+ */
+@RestController
+@RequestMapping("/api/v1/file")
+public class FileController {
+
+    @Autowired
+    private MinioUtil client;
+
+    @PostMapping("/upload/image")
+    public Result upload(MultipartFile file) {
+        MinioResult result = client.uploadFile(file, "image");
+        return Result.success(result);
+    }
+
+    @PostMapping("/upload/document")
+    public Result publicUpload(MultipartFile file, FileDTO fileDTO) {
+        MinioResult result = client.uploadFile(file, "document");
+        if (Objects.nonNull(fileDTO.getFileContentType())) {
+            result.setFileContentType(fileDTO.getFileContentType());
+        }
+        return Result.success(result);
+    }
+
+    @PostMapping("/upload/video")
+    public Result videoUpload(MultipartFile file) {
+        MinioVideoResult minioVideoResult = new MinioVideoResult();
+        MinioResult result = client.uploadFile(file, "video");
+        minioVideoResult.setVideoUrl(result.getUrl());
+        minioVideoResult.setRealName(file.getOriginalFilename());
+        return Result.success(minioVideoResult);
+    }
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java
new file mode 100644
index 0000000..13b4399
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/MinioResult.java
@@ -0,0 +1,27 @@
+package org.dromara.demo.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author gonghl
+ * @date 2024-3-6
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+
+public class MinioResult {
+
+    public MinioResult(String url) {
+        this.url = url;
+    }
+
+    private String bucketName;
+    private String fileName;
+    private String url;
+    private String realName;
+    private String fileContentType;
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java
new file mode 100644
index 0000000..049b8c2
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/FileDTO.java
@@ -0,0 +1,43 @@
+package org.dromara.demo.domain.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author zhangliang
+ * @version 1.0
+ * @date 2021/12/23 15:24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class FileDTO {
+
+    private static final long serialVersionUID = 7047764513709611598L;
+
+    private String fileId;
+    /**
+     * 缁戝畾鏁版嵁鐨刬d
+     */
+    private String dataId;
+
+    /**
+     * 鍦板潃
+     */
+    private String location;
+
+    /**
+     * 鏂囦欢鍚嶇О
+     */
+    private String fileName;
+
+
+    private String fileSize;
+
+    private String fileContentType;
+
+    private Integer deleted;
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java
new file mode 100644
index 0000000..63cd404
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/MinioVideoResult.java
@@ -0,0 +1,15 @@
+package org.dromara.demo.domain.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class MinioVideoResult {
+    private String coverUrl;
+    private String videoUrl;
+    private String realName;
+    private String videoTime;
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java
new file mode 100644
index 0000000..7a2e798
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/Result.java
@@ -0,0 +1,95 @@
+package org.dromara.demo.domain.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author Satori
+ * @date 2020/11/12 17:29
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@Accessors(chain = true)
+public class Result<T> {
+
+    private Integer code;
+
+    private String message;
+
+    private T result;
+
+    private Integer userId;
+
+    private String token;
+
+
+    /**
+     * 榛樿
+     *
+     * @param result
+     * @param resultCode
+     */
+    private Result(T result, ResultCode resultCode) {
+        this.result = result;
+        this.code = resultCode.getCode();
+        this.message = resultCode.getMessage();
+    }
+
+    private Result(T result, Integer code, String message) {
+        this.result = result;
+        this.code = code;
+        this.message = message;
+    }
+
+
+    private Result(ResultCode resultCode) {
+        this.result = null;
+        this.code = resultCode.getCode();
+        this.message = resultCode.getMessage();
+    }
+
+
+    private Result(boolean code) {
+        if (code) {
+            this.result = null;
+            this.code = ResultCode.SUCCESS.getCode();
+            this.message = ResultCode.SUCCESS.getMessage();
+        } else {
+            this.result = null;
+            this.code = ResultCode.SYSTEM_ERROR.getCode();
+            this.message = ResultCode.SYSTEM_ERROR.getMessage();
+        }
+    }
+
+
+    public static <T> Result<T> success(T data) {
+        return new Result<T>(data, ResultCode.SUCCESS);
+    }
+
+    public static <T> Result<T> success(T data, String message) {
+        return new Result(data, ResultCode.SUCCESS.getCode(), message);
+    }
+
+    public static Result success() {
+        return new Result<>(true);
+    }
+
+
+
+    public static Result error() {
+        return new Result(ResultCode.SYSTEM_ERROR);
+    }
+
+
+    public static <T> Result<T> error(String errorMessage, Integer errorCode) {
+        return new Result<T>(true).setMessage(errorMessage).setCode(errorCode);
+    }
+
+
+    public static <T> Result<T> error(ResultCode resultCode) {
+        return new Result<T>(null, resultCode);
+    }
+
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java
new file mode 100644
index 0000000..e561abb
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/dto/ResultCode.java
@@ -0,0 +1,68 @@
+package org.dromara.demo.domain.dto;
+
+
+/**
+ * @author Satori
+ * @date 2021/5/11
+ */
+public enum ResultCode {
+    SUCCESS(200, "璇锋眰鎴愬姛"),
+    SYSTEM_ERROR(500, "绯荤粺閿欒"),
+    UNKNOWN_REQUEST(404, "鏈煡璇锋眰,璇锋牳瀵瑰悗鍐嶉噸璇�!"),
+    PARAM_IS_INVALID(1000, "鍙傛暟閿欒"),
+    USER_IS_EXISTED(1001, "鐢ㄦ埛宸插瓨鍦�"),
+    USER_NOT_EXIST(1002, "鐢ㄦ埛涓嶅瓨鍦�"),
+    LOGIN_EXCEPTION(1003, "瀵嗙爜鎴栬处鎴峰悕閿欒"),
+    USER_BANNED(1004, "鐢ㄦ埛褰撳墠涓嶅彲鐢�"),
+    TOKEN_EXPIRE(1005, "鐧诲綍宸插け鏁�"),
+    EMAIL_EXIST(1006, "閭宸茶娉ㄥ唽"),
+    EMAIL_NO_BINDING(1008, "褰撳墠閭鏈粦瀹氫换浣曡处鎴�"),
+    NO_DEFAULT_SYS_EMAIL(1009, "褰撳墠绯荤粺鏈缃偖绠�,璇疯仈绯荤鐞嗗憳璁剧疆"),
+    PASSWORD_RESET_PAGE_EXPIRE(1010, "褰撳墠閲嶇疆瀵嗙爜椤甸潰宸茶繃鏈�"),
+    CAPTCHA_ERROR_EXCEPTION(1011, "楠岃瘉鐮侀敊璇�"),
+    MENU_HAS_CHILDREN(1012, "褰撳墠鑿滃崟杩樻湁瀛愯彍鍗�,鏃犳硶鍒犻櫎"),
+    UPLOAD_FAIL_EXCEPTION(1013, "涓婁紶澶辫触,璇疯仈绯荤鐞嗗憳鎴栨煡鐪嬮敊璇棩蹇�"),
+    PERMISSION_HAS_CHILDREN(1014, "褰撳墠鑿滃崟杩樻湁瀛愯彍鍗�,鏃犳硶鍒犻櫎"),
+    IMG_NOT_EXISTS(1015,"鍥剧墖涓嶈兘涓虹┖"),
+    TEMPLATE_IS_EXISTED(1016,"妯℃澘宸插瓨鍦�"),
+    NAME_IS_EXISTED(1017,"鍚嶅瓧宸插瓨鍦�"),
+    REST_PASS_EXCEPTION(1018,"瀵嗙爜閿欒"),
+    REST_PASS_ATYPISM(1019,"涓ゆ瀵嗙爜杈撳叆涓嶄竴鑷�");
+
+
+    private Integer code;
+    private String message;
+
+
+    public static ResultCode getByCode(Integer code) {
+        for (ResultCode value : values()) {
+            if (value.getCode().equals(code)) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+    public static ResultCode getByMessage(String message) {
+        for (ResultCode value : values()) {
+            if (value.getMessage().equals(message)) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+
+    ResultCode(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer getCode() {
+        return this.code;
+    }
+
+    public String getMessage() {
+        return this.message;
+    }
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java
new file mode 100644
index 0000000..f525156
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/BaseException.java
@@ -0,0 +1,22 @@
+package org.dromara.demo.exception;
+
+import lombok.Getter;
+import org.dromara.demo.domain.dto.ResultCode;
+
+/**
+ * @author Satori
+ * @date 2021/5/11
+ */
+
+public class BaseException extends RuntimeException {
+
+    @Getter
+    protected ResultCode resultCode;
+
+    public BaseException(ResultCode resultCode) {
+        super(resultCode.getMessage());
+        this.resultCode = resultCode;
+
+    }
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java
new file mode 100644
index 0000000..49be40e
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/exception/UploadFailException.java
@@ -0,0 +1,14 @@
+package org.dromara.demo.exception;
+
+
+import org.dromara.demo.domain.dto.ResultCode;
+
+/**
+ * @author Satori
+ * @date 2021/10/15
+ */
+public class UploadFailException extends BaseException {
+    public UploadFailException() {
+        super(ResultCode.UNKNOWN_REQUEST);
+    }
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java
index 079ef7f..b761b2a 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java
@@ -1,266 +1,128 @@
 package org.dromara.demo.util;
 
 
-import io.minio.*;
-import io.minio.messages.DeleteError;
-import io.minio.messages.DeleteObject;
-import io.minio.messages.Item;
-import jakarta.servlet.ServletOutputStream;
-import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.compress.utils.IOUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
+import cn.hutool.core.util.IdUtil;
+import io.minio.MinioClient;
+import io.minio.PutObjectOptions;
+import jakarta.annotation.PostConstruct;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.dromara.demo.domain.MinioResult;
+import org.dromara.demo.exception.UploadFailException;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
+import java.io.ByteArrayInputStream;
 
 /**
- * @description锛� minio宸ュ叿绫�
- * @version
+ * @author gonghl
+ * @date 2024-3-6
  */
 @Component
+@ConfigurationProperties(prefix = "minio")
+@Slf4j
+@Data
 public class MinioUtil {
-    @Autowired
-    private MinioClient minioClient;
 
-    @Value("${minio.bucketName}")
-    private String bucketName;
-    /**
-     * description: 鍒ゆ柇bucket鏄惁瀛樺湪锛屼笉瀛樺湪鍒欏垱寤�
-     *
-     * @return: void
-     */
-    public void existBucket(String name) {
+
+    private String url;
+    private String accessKey;
+    private String secretKey;
+    private MinioClient client;
+
+
+    public MinioResult uploadFile(MultipartFile file, String bucketName) {
         try {
-            boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(name).build());
-            if (!exists) {
-                minioClient.makeBucket(MakeBucketArgs.builder().bucket(name).build());
+            if (!client.bucketExists(bucketName)) {
+                client.makeBucket(bucketName);
+                client.setBucketPolicy(bucketName, "public");
+            }
+
+            String[] split = file.getOriginalFilename().split("\\.");
+            String suffix = split[split.length - 1];
+
+            if (split.length < 2) {
+                suffix = "";
+            }
+
+            String fileName = StringUtils.join(IdUtil.randomUUID(), ".", suffix);
+
+            client.putObject(bucketName, fileName, file.getInputStream(), new PutObjectOptions(file.getSize(), 5 * 1024 * 1024));
+            String fileUrl = getFilePath(bucketName, fileName);
+            if (StringUtils.isNotBlank(fileUrl)) {
+                return new MinioResult(bucketName, fileName, fileUrl, file.getOriginalFilename(), null);
             }
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("涓婁紶澶辫触,澶辫触璇︽儏淇℃伅:{}", e.getMessage());
+            throw new UploadFailException();
         }
+        return null;
+
     }
 
-    /**
-     * 鍒涘缓瀛樺偍bucket
-     * @param bucketName 瀛樺偍bucket鍚嶇О
-     * @return Boolean
-     */
-    public Boolean makeBucket(String bucketName) {
+    public MinioResult uploadFile(ByteArrayInputStream in, String name, String bucketName) {
+
+        String[] split = name.split("\\.");
+        String suffix = split[split.length - 1];
+        if (split.length < 2) {
+            suffix = "";
+        }
+        String fileName = StringUtils.join(IdUtil.randomUUID(), ".", suffix);
         try {
-            minioClient.makeBucket(MakeBucketArgs.builder()
-                .bucket(bucketName)
-                .build());
+            client.putObject(bucketName, fileName, in, new PutObjectOptions(in.available(), 5 * 1024 * 1024));
+            String fileUrl = getFilePath(bucketName, fileName);
+            if (StringUtils.isNotBlank(fileUrl)) {
+                return new MinioResult(bucketName, fileName, fileUrl, name, null);
+            }
         } catch (Exception e) {
-            e.printStackTrace();
-            return false;
+            log.error("涓婁紶澶辫触,澶辫触璇︽儏淇℃伅:{}", e.getMessage());
+            throw new UploadFailException();
         }
-        return true;
+
+        return null;
+
     }
 
-    /**
-     * 鍒犻櫎瀛樺偍bucket
-     * @param bucketName 瀛樺偍bucket鍚嶇О
-     * @return Boolean
-     */
-    public Boolean removeBucket(String bucketName) {
+    public String uploadImage(ByteArrayInputStream in, String bucketName) {
         try {
-            minioClient.removeBucket(RemoveBucketArgs.builder()
-                .bucket(bucketName)
-                .build());
+            String fileName = IdUtil.randomUUID() + ".jpg";
+            client.putObject(bucketName, fileName, in, new PutObjectOptions(in.available(), 5 * 1024 * 1024));
+            String fileUrl = getFilePath(bucketName, fileName);
+            if (StringUtils.isNotBlank(fileUrl)) {
+                return fileUrl;
+            }
         } catch (Exception e) {
-            e.printStackTrace();
-            return false;
+            log.error("涓婁紶澶辫触,澶辫触璇︽儏淇℃伅:{}", e.getMessage());
+            throw new UploadFailException();
         }
-        return true;
-    }
-    /**
-     * description: 涓婁紶鏂囦欢
-     *
-     * @param multipartFile
-     * @return: java.lang.String
 
-     */
-    public List<String> uploads(MultipartFile[] multipartFile) {
-        List<String> names = new ArrayList<>(multipartFile.length);
-        for (MultipartFile file : multipartFile) {
-            String fileName = file.getOriginalFilename();
-            String[] split = fileName.split("\\.");
-            if (split.length > 1) {
-                fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1];
-            } else {
-                fileName = fileName + System.currentTimeMillis();
-            }
-            InputStream in = null;
-            try {
-                in = file.getInputStream();
-                minioClient.putObject(PutObjectArgs.builder()
-                    .bucket(bucketName)
-                    .object(fileName)
-                    .stream(in, in.available(), -1)
-                    .contentType(file.getContentType())
-                    .build()
-                );
-            } catch (Exception e) {
-                e.printStackTrace();
-            } finally {
-                if (in != null) {
-                    try {
-                        in.close();
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-            names.add(fileName);
-        }
-        return names;
+        return null;
+
     }
 
-    /**
-     * 涓婁紶鍗曚釜鏂囦欢
-     * @param multipartFile
-     * @return
-     */
-    public String upload(MultipartFile multipartFile) {
-
-            String fileName = multipartFile.getOriginalFilename();
-            String[] split = fileName.split("\\.");
-            if (split.length > 1) {
-                fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1];
-            } else {
-                fileName = fileName + System.currentTimeMillis();
-            }
-            InputStream in = null;
-            try {
-                in = multipartFile.getInputStream();
-                minioClient.putObject(PutObjectArgs.builder()
-                    .bucket(bucketName)
-                    .object(fileName)
-                    .stream(in, in.available(), -1)
-                    .contentType(multipartFile.getContentType())
-                    .build()
-                );
-            } catch (Exception e) {
-                e.printStackTrace();
-            } finally {
-                if (in != null) {
-                    try {
-                        in.close();
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-
-        return fileName;
-    }
-
-    /**
-     * description: 涓嬭浇鏂囦欢
-     *
-     * @param fileName
-     * @return: org.springframework.http.ResponseEntity<byte [ ]>
-     */
-    public ResponseEntity<byte[]> download(String fileName) {
-        ResponseEntity<byte[]> responseEntity = null;
-        InputStream in = null;
-        ByteArrayOutputStream out = null;
+    public String getFilePath(String bucketName, String fileName) {
+        String wordUrl = null;
         try {
-            in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build());
-            out = new ByteArrayOutputStream();
-            IOUtils.copy(in, out);
-            //灏佽杩斿洖鍊�
-            byte[] bytes = out.toByteArray();
-            HttpHeaders headers = new HttpHeaders();
-            try {
-                headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
-            } catch (UnsupportedEncodingException e) {
-                e.printStackTrace();
+            if (client.getObject(bucketName, fileName) == null) {
+                return null;
             }
-            headers.setContentLength(bytes.length);
-            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
-            headers.setAccessControlExposeHeaders(Arrays.asList("*"));
-            responseEntity = new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);
+
+            return StringUtils.join("/", bucketName, "/", fileName);
         } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            try {
-                if (in != null) {
-                    try {
-                        in.close();
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
-                }
-                if (out != null) {
-                    out.close();
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+            log.error("鑾峰彇bucket涓�:{},鏂囦欢鍚嶄负{}鏃跺嚭閿�,鍘熷洜:{}", bucketName, fileName, e.getMessage());
         }
-        return responseEntity;
-    }
 
-    /**
-     * 涓嬭浇鏂囦欢
-     *
-     * @param originalName 鏂囦欢璺緞
-     */
-    public InputStream downloadFile(String originalName, HttpServletResponse response) {
-        try {
-
-            InputStream file = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(originalName).build());
-            String filename = new String(originalName.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
-            if (StringUtils.isNotBlank(originalName)) {
-                filename = originalName;
-            }
-            response.setHeader("Content-Disposition", "attachment;filename=" + filename);
-            ServletOutputStream servletOutputStream = response.getOutputStream();
-            int len;
-            byte[] buffer = new byte[1024];
-            while ((len = file.read(buffer)) > 0) {
-                servletOutputStream.write(buffer, 0, len);
-            }
-            servletOutputStream.flush();
-            file.close();
-            servletOutputStream.close();
-            return file;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
+        return null;
     }
 
 
-    /**
-     * 鎵归噺鍒犻櫎鏂囦欢瀵硅薄
-     * @param bucketName 瀛樺偍bucket鍚嶇О
-     * @param objects 瀵硅薄鍚嶇О闆嗗悎
-     */
-    public Iterable<Result<DeleteError>> removeObjects(String bucketName, List<String> objects) {
-        List<DeleteObject> dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList());
-        Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder().bucket(bucketName).objects(dos).build());
-        return results;
-    }
+    @PostConstruct
+    public void creatConnect() throws Exception {
+        this.client = new MinioClient(url, accessKey, secretKey);
 
+
+    }
 
 }
-
-

--
Gitblit v1.8.0