From 2c6d0fe2955ec173b44b80ba9169b43881a48dd0 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Tue, 25 Jan 2022 11:24:47 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B4=E5=90=88=E9=98=BF=E9=87=8C=E4=BA=91?= =?UTF-8?q?oss=E6=9C=8D=E5=8A=A1=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + ruoyi-modules/ruoyi-file/pom.xml | 7 ++ .../file/config/AliyunOssProperties.java | 38 ++++++++++ .../service/AliyunOssFileServiceImpl.java | 69 +++++++++++++++++++ .../file/service/FtpSysFileServiceImpl.java | 2 - 5 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssProperties.java create mode 100644 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java diff --git a/pom.xml b/pom.xml index ce8abf72..4fddfe0d 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ 5.7.17 3.4.3.4 3.6 + 3.14.0 diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/ruoyi-file/pom.xml index 9463b20e..9e351683 100644 --- a/ruoyi-modules/ruoyi-file/pom.xml +++ b/ruoyi-modules/ruoyi-file/pom.xml @@ -61,6 +61,13 @@ ${commonsNet.version} + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyunoss.version} + + com.ruoyi diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssProperties.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssProperties.java new file mode 100644 index 00000000..3c41d2dc --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AliyunOssProperties.java @@ -0,0 +1,38 @@ +package com.ruoyi.file.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 阿里云oss配置属性 + * + * @author xiejs + * @since 2022-01-25 + */ +@Data +@Component +@ConfigurationProperties(prefix = "aliyun.oss.file") +public class AliyunOssProperties { + + /** + * 文件地址 + */ + private String endpoint; + + /** + *keyId + */ + private String keyId; + + /** + * 密钥 + */ + private String keySecret; + + /** + * 文件分类 + */ + private String bucketName; + +} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java new file mode 100644 index 00000000..3ee9857a --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java @@ -0,0 +1,69 @@ +package com.ruoyi.file.service; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.ruoyi.file.config.AliyunOssProperties; +import com.ruoyi.file.utils.FileUploadUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; + +/** + * 阿里云oss文件上传实现 + * @author xiejs + * @since 2022-01-25 + */ +@Service +@Primary +public class AliyunOssFileServiceImpl implements ISysFileService{ + + + @Autowired + private AliyunOssProperties aliyunOssProperties; + + @Override + public String uploadFile(MultipartFile file) throws Exception { + try { + String endpoint = aliyunOssProperties.getEndpoint(); + String keyId = aliyunOssProperties.getKeyId(); + String keySecret = aliyunOssProperties.getKeySecret(); + String bucketName = aliyunOssProperties.getBucketName(); + OSS ossClient = new OSSClientBuilder().build(endpoint, + keyId, keySecret); + //获取流 + InputStream is = file.getInputStream(); + //获取文件后缀 + String extension = FileUploadUtils.getExtension(file); + //获取文件名称 + String fileName = getDataTime()+"."+extension; + //执行文件上传 bucket名称 文件名称 文件流 + ossClient.putObject(bucketName,fileName,is); + //关闭ossClient + ossClient.shutdown(); + //拼接文件地址 + return "https://"+bucketName+"."+endpoint+"/"+fileName; + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + /** + * 生成一个当前日期文件名 + * @return + */ + private String getDataTime(){ + String today = DateUtil.format(new Date(), "yyyy-MM"); + String time = DateUtil.formatDateTime(new Date()); + int random = RandomUtil.randomInt(1000, 10000); + //防止同一时间生成文件名重复 + return today+"/"+time+"-"+random; + } +} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpSysFileServiceImpl.java index e3a631c6..12f1ed6b 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpSysFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FtpSysFileServiceImpl.java @@ -5,7 +5,6 @@ import com.ruoyi.file.config.FtpProperties; import com.ruoyi.file.utils.FileUploadUtils; import com.ruoyi.file.utils.FtpUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; @@ -18,7 +17,6 @@ import java.util.UUID; * @since 2022-01-24 */ @Service -@Primary public class FtpSysFileServiceImpl implements ISysFileService{ @Autowired