• 全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务


    1、进入阿里云官网

    https://www.aliyun.com/

    2、搜索“对象存储OSS

    3、进入“管理控制台”

    4、进入“Bucket列表”,点击“创建Bucket”

    5、根据实际情况选择,最后点击“确定”

    这里插入一个可以通过代码创建Bucket的测试类,如下:

    1. import com.aliyun.oss.OSS;
    2. import com.aliyun.oss.OSSClientBuilder;
    3. public class OssTest {
    4. public static void main(String[] args) {
    5. String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
    6. String accessKeyId = "LTAI5tRo9YESJJp2EjPscF1h";
    7. String accessKeySecret = "UhClPCgctvM0gZdcppsCc0vTMOVuKm";
    8. String bucketName = "sgg-yygh-syt-test";
    9. //创建OSSClient实例
    10. OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
    11. //创建存储空间
    12. ossClient.createBucket(bucketName);
    13. //关闭OSSClient
    14. ossClient.shutdown();
    15. }
    16. }

    6、点击“文件列表”,选择“上传文件”

    7、选择“扫描文件”,顺便选择一张图片后,再点击“上传文件”

    8、返回文件列表,点击“详情”

    9、复制url,粘贴到浏览器上就可以下载此文件了

    以上均为控制台操作文件,下面展示通过代码操作

    10、选择“AccessKey管理”

    11、点击“创建AccessKey”

    12、创建成功后,把“AccessKey ID”和“AccessKey Secret”复制下来,后面要用

    13、开始代码开发,引入依赖,如果是SpringBoot项目就不用加nacos依赖

    1. com.aliyun.oss
    2. aliyun-sdk-oss
    3. 3.15.1
    4. joda-time
    5. joda-time
    6. 2.10.1
    7. com.alibaba.cloud
    8. spring-cloud-starter-alibaba-nacos-discovery
    9. 2.2.0.RELEASE

    14、添加配置文件application.properties,SpringBoot项目就不用加nacos的配置了

    1. # 服务端口
    2. server.port=8205
    3. # 服务名
    4. spring.application.name=service-oss
    5. #返回json的全局时间格式.
    6. spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    7. spring.jackson.time-zone=GMT+8
    8. # nacos服务地址
    9. spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    10. aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
    11. aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
    12. aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm
    13. aliyun.oss.bucket=sgg-yygh-syt

    aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
    aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm

    aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com

    aliyun.oss.bucket=sgg-yygh-syt

    15、添加启动类,SpringBootApplication的

    (exclude=DataSourceAutoConfiguration.class)

    和EnableDiscoveryClient注解看情况加

    1. import org.springframework.boot.SpringApplication;
    2. import org.springframework.boot.autoconfigure.SpringBootApplication;
    3. import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    4. import org.springframework.context.annotation.ComponentScan;
    5. @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
    6. @EnableDiscoveryClient//开启nacos注册中心
    7. @ComponentScan(basePackages = {"com.hospital"})//可以扫描到另一个模块的swagger
    8. public class ServiceOssApplication {
    9. public static void main(String[] args) {
    10. SpringApplication.run(ServiceOssApplication.class, args);
    11. }
    12. }

    16、创建ConstantOssPropertiesUtils配置类

    1. import org.springframework.beans.factory.InitializingBean;
    2. import org.springframework.beans.factory.annotation.Value;
    3. import org.springframework.stereotype.Component;
    4. @Component
    5. public class ConstantOssPropertiesUtils implements InitializingBean {
    6. @Value("${aliyun.oss.endpoint}")
    7. private String endpoint;
    8. @Value("${aliyun.oss.accessKeyId}")
    9. private String accessKeyId;
    10. @Value("${aliyun.oss.secret}")
    11. private String secret;
    12. @Value("${aliyun.oss.bucket}")
    13. private String bucket;
    14. public static String EDNPOINT;
    15. public static String ACCESS_KEY_ID;
    16. public static String SECRECT;
    17. public static String BUCKET;
    18. @Override
    19. public void afterPropertiesSet() throws Exception {
    20. EDNPOINT=endpoint;
    21. ACCESS_KEY_ID=accessKeyId;
    22. SECRECT=secret;
    23. BUCKET=bucket;
    24. }
    25. }

    17、编写controller,service,serviceImpl

    controller层:

    1. import com.hospital.common.result.Result;
    2. import com.hospital.oss.service.FileService;
    3. import org.springframework.beans.factory.annotation.Autowired;
    4. import org.springframework.web.bind.annotation.PostMapping;
    5. import org.springframework.web.bind.annotation.RequestMapping;
    6. import org.springframework.web.bind.annotation.RestController;
    7. import org.springframework.web.multipart.MultipartFile;
    8. @RestController
    9. @RequestMapping("/api/oss/file")
    10. public class FileApiController {
    11. @Autowired
    12. private FileService fileService;
    13. @PostMapping("/fileUpload")
    14. public Result fileUpload(MultipartFile file){
    15. //获取上传文件
    16. String url = fileService.uploadFile(file);
    17. return Result.ok(url);
    18. }
    19. }

    service层:

    1. import org.springframework.web.multipart.MultipartFile;
    2. public interface FileService {
    3. //上传文件到阿里云oss
    4. String uploadFile(MultipartFile file);
    5. }

    serviceImpl层:

    1. import com.aliyun.oss.OSS;
    2. import com.aliyun.oss.OSSClientBuilder;
    3. import com.hospital.oss.service.FileService;
    4. import com.hospital.oss.utils.ConstantOssPropertiesUtils;
    5. import org.joda.time.DateTime;
    6. import org.springframework.stereotype.Service;
    7. import org.springframework.web.multipart.MultipartFile;
    8. import java.io.IOException;
    9. import java.io.InputStream;
    10. import java.util.UUID;
    11. @Service
    12. public class FileServiceImpl implements FileService {
    13. @Override
    14. public String uploadFile(MultipartFile file) {
    15. //获取ConstantOssPropertiesUtils中的属性
    16. String endpoint = ConstantOssPropertiesUtils.EDNPOINT;
    17. String accessKeyId = ConstantOssPropertiesUtils.ACCESS_KEY_ID;
    18. String accessKeySecret = ConstantOssPropertiesUtils.SECRECT;
    19. String bucketName = ConstantOssPropertiesUtils.BUCKET;
    20. try {
    21. //创建OSSClient实例
    22. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    23. //上传文件流
    24. InputStream inputStream = file.getInputStream();
    25. String fileName = file.getOriginalFilename();
    26. //生成随机唯一值,使用uuid,添加到文件名称里面
    27. String uuid = UUID.randomUUID().toString().replaceAll("-","");
    28. fileName = uuid+fileName;
    29. //按照当前日期,创建文件夹,上传到创建文件夹里面
    30. //2021/02/02/01.jpg
    31. String timeUrl = new DateTime().toString("yyyy/MM/dd");
    32. fileName = timeUrl+"/"+fileName;
    33. //调用方法实现上传
    34. ossClient.putObject(bucketName, fileName, inputStream);
    35. //关闭OSSClient。
    36. ossClient.shutdown();
    37. //上传之后文件路径
    38. //https://yygh-atguigu.oss-cn-beijing.aliyuncs.com/01.jpg
    39. String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
    40. //返回
    41. return url;
    42. } catch (IOException e) {
    43. e.printStackTrace();
    44. return null;
    45. }
    46. }
    47. }

    18、swagger上传文件测试

    19、打开阿里云OSS文件列表查看

    最后, 整合阿里云OSS对象存储服务成功!!! 

  • 相关阅读:
    新手如何选择外汇交易平台?
    UNet++: A Nested U-Net Architecturefor Medical Image Segmentation
    MySQL——主从复制
    数据结构与算法-希尔排序
    RabbitMQ快速入门笔记(详细)
    Groovy安装开发环境
    c++输入输出文件操作stream
    算法通过村第十四关-堆|青铜笔记|堆结构
    Github-使用2FA验证:使用python实现TOTP验证,python实现github的2FA验证
    JAVA如何保留小数点后两位
  • 原文地址:https://blog.csdn.net/weixin_55076626/article/details/127924003