Răsfoiți Sursa

oss对象存储

zuy 2 ani în urmă
părinte
comite
a5ff57b3f0

+ 10 - 0
common/pom.xml

@@ -104,6 +104,16 @@
             <artifactId>commons-pool2</artifactId>
         </dependency>
 
+
+<!--        oss文件服务器-->
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.16.1</version>
+        </dependency>
+
+
+
     </dependencies>
 
 </project>

+ 19 - 0
common/src/main/java/com/kym/common/config/OssConfig.java

@@ -0,0 +1,19 @@
+package com.kym.common.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "oss")
+public class OssConfig {
+    private String endpoint;
+    private String keyId;
+    private String keySecret;
+    private String bucket;
+    private String prefix;
+
+
+}

+ 101 - 0
common/src/main/java/com/kym/common/utils/OssUtil.java

@@ -0,0 +1,101 @@
+package com.kym.common.utils;
+
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.OSSObject;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
+import com.kym.common.config.OssConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+
+
+/**
+ * aliyun 对象存储工具类
+ */
+public class OssUtil {
+    private static Logger logger = LoggerFactory.getLogger(OssUtil.class);
+    private static String bucket;
+
+    private OssUtil() {
+    }
+
+    private static OSS getClient() {
+        OssConfig ossConfig = SpringUtil.getBean(OssConfig.class);
+        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
+        String endpoint = ossConfig.getEndpoint();
+        String keyId = ossConfig.getKeyId();
+        String keySecret = ossConfig.getKeySecret();
+        bucket = ossConfig.getBucket();
+        // 创建OSSClient实例。
+        return new OSSClientBuilder().build(endpoint, keyId, keySecret);
+    }
+
+    /**
+     * 文件上传
+     *
+     * @param fileId 文件在应用系统中的唯一ID
+     * @param file   文件
+     */
+    public static PutObjectResult upload(String fileId, File file) {
+        OSS oss = getClient();
+
+        try {
+            PutObjectRequest request = new PutObjectRequest(bucket, fileId, file);
+            return oss.putObject(request);
+        } catch (Exception ce) {
+            logger.error("upload>>>" + ce.getMessage(), ce);
+        } finally {
+            if (oss != null) {
+                oss.shutdown();
+            }
+        }
+        return null;
+    }
+
+
+    public static void download(String fileId, File destFile) {
+        OSS oss = getClient();
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        try {
+            // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
+            OSSObject ossObject = oss.getObject(bucket, fileId);
+            // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
+            inputStream = ossObject.getObjectContent();
+            outputStream = Files.newOutputStream(destFile.toPath());
+            IoUtil.copy(inputStream, outputStream);
+        } catch (Exception ce) {
+            logger.error("download >>>" + ce.getMessage(), ce);
+        } finally {
+            if (oss != null) {
+                oss.shutdown();
+            }
+            IoUtil.close(outputStream);
+            IoUtil.close(inputStream);
+        }
+    }
+
+
+    public static void delete(String fileId) {
+        OSS oss = getClient();
+        try {
+            // 删除文件。
+            oss.deleteObject(bucket, fileId);
+        } catch (Exception ce) {
+            logger.error("delete >>>" + ce.getMessage(), ce);
+        } finally {
+            if (oss != null) {
+                oss.shutdown();
+            }
+        }
+    }
+
+}

+ 7 - 0
miniapp/src/main/resources/application.yml

@@ -130,3 +130,10 @@ upload:
    storage: file_storage  #文件存放地址
    size: 20  #最大上传Mb
 
+oss:
+  endpoint: oss-cn-shenzhen.aliyuncs.com
+  keyId:
+  keySecret:
+  bucket: kym-static
+  prefix: static.kuaiyuman.cn
+