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