Forráskód Böngészése

增加oss工具类

xuzuoyun 5 éve
szülő
commit
2c1c68c07d

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaishouInterfaceServiceImpl.java

@@ -1162,6 +1162,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             FileUploadTool fileUploadTool = new FileUploadTool();
             FileEntity entity;
             entity = fileUploadTool.createFile(multipartFile, request, savaPath);
+
             if (!Check.isNull(entity)) {
                 String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.IMAGE_UPLOAD;
                 JSONObject requestJson = new JSONObject();

+ 233 - 0
module-common/src/main/java/cn/com/ctop/common/utils/OSSUtils.java

@@ -0,0 +1,233 @@
+package cn.com.ctop.common.utils;
+
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.Bucket;
+import com.aliyun.oss.model.OSSObject;
+import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PutObjectResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+@Configuration
+@PropertySource("classpath:config.properties")
+public class OSSUtils {
+    private static Logger logger = LoggerFactory.getLogger(OSSUtils.class);
+
+    /**
+     * 阿里云API的密钥Access Key ID
+     */
+    private static String accessKeyId;
+    /**
+     * 阿里云API的密钥Access Key Secret
+     */
+    private static String accessKeySecret;
+    /**
+     * 阿里云API的内或外网域名
+     */
+    private static String endpoint;
+    /**
+     * 阿里云API的bucket名称
+     */
+    private static String bucketName;
+    /**
+     * 阿里云API的文件夹名称
+     */
+    private static String folder;
+
+    /**
+     * 获取阿里云OSS客户端对象
+     *
+     * @return ossClient
+     */
+    public static OSSClient getOSSClient() {
+        return new OSSClient(endpoint, accessKeyId, accessKeySecret);
+    }
+
+    /**
+     * 创建存储空间
+     *
+     * @param ossClient  OSS连接
+     * @param bucketName 存储空间
+     * @return
+     */
+    public static String createBucketName(OSSClient ossClient, String bucketName) {
+        // 存储空间
+        final String bucketNames = bucketName;
+        if (!ossClient.doesBucketExist(bucketName)) {
+            // 创建存储空间
+            Bucket bucket = ossClient.createBucket(bucketName);
+            logger.info("创建存储空间成功");
+            return bucket.getName();
+        }
+        return bucketNames;
+    }
+
+    /**
+     * 删除存储空间buckName
+     *
+     * @param ossClient  oss对象
+     * @param bucketName 存储空间
+     */
+    public static void deleteBucket(OSSClient ossClient, String bucketName) {
+        ossClient.deleteBucket(bucketName);
+        logger.info("删除" + bucketName + "Bucket成功");
+    }
+
+    /**
+     * 创建模拟文件夹
+     *
+     * @param ossClient  oss连接
+     * @param bucketName 存储空间
+     * @param folder     模拟文件夹名如"qj_nanjing/"
+     * @return 文件夹名
+     */
+    public static String createFolder(OSSClient ossClient, String bucketName, String folder) {
+        // 文件夹名
+        final String keySuffixWithSlash = folder;
+        // 判断文件夹是否存在,不存在则创建
+        if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) {
+            // 创建文件夹
+            ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
+            logger.info("创建文件夹成功");
+            // 得到文件夹名
+            OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
+            String fileDir = object.getKey();
+            return fileDir;
+        }
+        return keySuffixWithSlash;
+    }
+
+    /**
+     * 根据key删除OSS服务器上的文件
+     *
+     * @param ossClient  oss连接
+     * @param bucketName 存储空间
+     * @param folder     模拟文件夹名 如"qj_nanjing/"
+     * @param key        Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
+     */
+    public static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key) {
+        ossClient.deleteObject(bucketName, folder + key);
+        logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");
+    }
+
+    /**
+     * 上传图片至OSS
+     *
+     * @param ossClient  oss连接
+     * @param file       上传文件(文件全路径如:D:\\image\\cake.jpg)
+     * @param bucketName 存储空间
+     * @param folder     模拟文件夹名 如"qj_nanjing/"
+     * @return String 返回的唯一MD5数字签名
+     */
+    public static String uploadObject2OSS(OSSClient ossClient, File file, String bucketName, String folder) {
+        String resultStr = null;
+        try {
+            // 以输入流的形式上传文件
+            InputStream is = new FileInputStream(file);
+            // 文件名
+            String fileName = file.getName();
+            // 文件大小
+            Long fileSize = file.length();
+            // 创建上传Object的Metadata
+            ObjectMetadata metadata = new ObjectMetadata();
+            // 上传的文件的长度
+            metadata.setContentLength(is.available());
+            // 指定该Object被下载时的网页的缓存行为
+            metadata.setCacheControl("no-cache");
+            // 指定该Object下设置Header
+            metadata.setHeader("Pragma", "no-cache");
+            // 指定该Object被下载时的内容编码格式
+            metadata.setContentEncoding("utf-8");
+            // 文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
+            // 如果没有扩展名则填默认值application/octet-stream
+            metadata.setContentType(getContentType(fileName));
+            // 指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
+            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
+            // 上传文件 (上传文件流的形式)
+            PutObjectResult putResult = ossClient.putObject(bucketName, folder + fileName, is, metadata);
+            // 解析结果
+            resultStr = putResult.getETag();
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
+        }
+        return resultStr;
+    }
+
+    /**
+     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
+     *
+     * @param fileName 文件名
+     * @return 文件的contentType
+     */
+    public static String getContentType(String fileName) {
+        // 文件的后缀名
+        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
+        if (".bmp".equalsIgnoreCase(fileExtension)) {
+            return "image/bmp";
+        }
+        if (".gif".equalsIgnoreCase(fileExtension)) {
+            return "image/gif";
+        }
+        if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)
+                || ".png".equalsIgnoreCase(fileExtension)) {
+            return "image/jpeg";
+        }
+        if (".png".equalsIgnoreCase(fileExtension)) {
+            return "image/png";
+        }
+        if (".html".equalsIgnoreCase(fileExtension)) {
+            return "text/html";
+        }
+        if (".txt".equalsIgnoreCase(fileExtension)) {
+            return "text/plain";
+        }
+        if (".vsd".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.visio";
+        }
+        if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.ms-powerpoint";
+        }
+        if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
+            return "application/msword";
+        }
+        if (".xml".equalsIgnoreCase(fileExtension)) {
+            return "text/xml";
+        }
+        // 默认返回类型
+        return "";
+    }
+
+    @Value("${aliyun.accessKeyId}")
+    public void setAccessKeyId(String accessKeyId) {
+        OSSUtils.accessKeyId = accessKeyId;
+    }
+
+    @Value("${aliyun.accessKeySecret}")
+    public void setAccessKeySecret(String accessKeySecret) {
+        OSSUtils.accessKeySecret = accessKeySecret;
+    }
+
+    @Value("${aliyun.oss.endpoint}")
+    public void setEndpoint(String endpoint) {
+        OSSUtils.endpoint = endpoint;
+    }
+
+    @Value("${aliyun.oss.bucketName}")
+    public void setBucketName(String bucketName) {
+        OSSUtils.bucketName = bucketName;
+    }
+
+    @Value("${aliyun.oss.folder}")
+    public void setFolder(String folder) {
+        OSSUtils.folder = folder;
+    }
+}

+ 7 - 0
module-common/src/main/resources/config.properties

@@ -0,0 +1,7 @@
+# Aliyun Config
+aliyun.accessKeyId=LTAIbNbqWzSOklQV
+aliyun.accessKeySecret=1rkPz7JNoXk8sJevPaeYHWqfkQXBGh
+# Aliyun OSS Config
+aliyun.oss.endpoint=http://oss-cn-beijing.aliyuncs.com
+aliyun.oss.bucketName=ctop-media
+aliyun.oss.folder=file

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/service/impl/KuaishouWebInterfaceServiceImpl.java

@@ -423,7 +423,7 @@ public class KuaishouWebInterfaceServiceImpl implements IKuaishouWebInterfaceSer
     public static void main(String[] args){
         try {
             KuaishouWebInterfaceServiceImpl i = new KuaishouWebInterfaceServiceImpl();
-            i.adkuaishouWebLogin("17116890601", "a123456");
+            i.adkuaishouWebLogin("18811551872", "a123456");
             Thread.sleep(20000);
             i.deleteAllComment(new HashMap<>());
         } catch (Exception e) {

+ 5 - 0
pom.xml

@@ -345,6 +345,11 @@
             <artifactId>aliyun-java-sdk-core</artifactId>
             <version>${aliyun-java-sdk-core.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>2.8.3</version>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>