疯狂的狮子Li
2022-04-08 94b09c3fc0494ca434cde22fcdda429c3dc84485
ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java
@@ -1,6 +1,7 @@
package com.ruoyi.oss.service.impl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.oss.constant.OssConstant;
import com.ruoyi.oss.entity.UploadResult;
import com.ruoyi.oss.enumd.OssEnumd;
import com.ruoyi.oss.enumd.PolicyType;
@@ -8,7 +9,10 @@
import com.ruoyi.oss.properties.OssProperties;
import com.ruoyi.oss.service.abstractd.AbstractOssStrategy;
import io.minio.*;
import io.minio.http.HttpUtils;
import okhttp3.HttpUrl;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -18,22 +22,29 @@
 *
 * @author Lion Li
 */
@Component
public class MinioOssStrategy extends AbstractOssStrategy {
    private MinioClient minioClient;
    @Override
    public void init(OssProperties cloudStorageProperties) {
        properties = cloudStorageProperties;
    public void init(OssProperties ossProperties) {
        super.init(ossProperties);
        try {
            minioClient = MinioClient.builder()
                .endpoint(properties.getEndpoint())
                .credentials(properties.getAccessKey(), properties.getSecretKey())
                .build();
            MinioClient.Builder builder = MinioClient.builder();
            if (OssConstant.IS_HTTPS.equals(ossProperties.getIsHttps())) {
                HttpUrl url = HttpUtils.getBaseUrl(properties.getEndpoint())
                    .newBuilder().scheme("https").build();
                builder.endpoint(url);
            } else {
                builder.endpoint(properties.getEndpoint());
            }
            minioClient = builder.credentials(properties.getAccessKey(), properties.getSecretKey()).build();
            createBucket();
        } catch (Exception e) {
            throw new OssException("Minio存储配置错误! 请检查系统配置:[" + e.getMessage() + "]");
        }
        isInit = true;
    }
    @Override
@@ -56,8 +67,8 @@
    }
    @Override
    public String getServiceType() {
        return OssEnumd.MINIO.getValue();
    public OssEnumd getServiceType() {
        return OssEnumd.MINIO;
    }
    @Override
@@ -68,6 +79,8 @@
    @Override
    public UploadResult upload(InputStream inputStream, String path, String contentType) {
        try {
            // 解决 inputStream.available() 再 socket 下传输延迟问题 导致获取数值不精确
            Thread.sleep(1000);
            minioClient.putObject(PutObjectArgs.builder()
                .bucket(properties.getBucketName())
                .object(path)
@@ -77,7 +90,7 @@
        } catch (Exception e) {
            throw new OssException("上传文件失败,请核对Minio配置信息:[" + e.getMessage() + "]");
        }
        return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
        return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build();
    }
    @Override