当前位置:   article > 正文

【SpringBoot应用篇】阿里云OSS对象存储_springboot+阿里云oss

springboot+阿里云oss

开通“对象存储OSS”服务

在这里插入图片描述

创建Bucket

在这里插入图片描述

上传测试图片

1.开始上传文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

获取用户acesskeys

在这里插入图片描述
在这里插入图片描述

使用SDK文档

文档首页 > 阿里云学习路径 > OSS 学习路径
在这里插入图片描述

pom

在这里插入图片描述

创建存储空间

在这里插入图片描述

以文件流上传

在这里插入图片描述

文件服务实现

在这里插入图片描述
项目地址: https://gitee.com/zysheep/springcloudalibaba.git

搭建server-oss模块

pom

修改pom.xml,引入阿里云oss依赖

<dependencies>
  <dependency>
      <groupId>cn.zysheep</groupId>
      <artifactId>common</artifactId>
      <version>0.0.1-SNAPSHOT</version>
  </dependency>

  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>

  <!--阿里云oss依赖-->
  <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.10.2</version>
  </dependency>

  <!--日期工具类-->
  <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
  </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

application.yml

添加配置文件

server:
  port: 9993

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  application:
    name: server-oss
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

aliyun:
  oss:
    endpoint: oss-cn-guangzhou.aliyuncs.com
    bucket: yygh-zysheep
    accessKeyId: xxxxxxx  #阿里云accessKeyId
    secret: xxxxxxx #阿里云secret
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class ServerOssApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServerOssApplication.class,args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

配置网关

server:
  port: 9999

spring:
  application:
    name: service-gateway
  # nacos服务地址
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    gateway:
      #使用服务发现路由
      discovery:
        locator:
          enabled: true
      routes:
          #设置路由id
        - id: service-consumer  #路由的ID,没有固定规则但要求唯一,简易配合服务名
          #设置路由的uri
          uri: lb://service-consumer  #匹配后提供服务的路由地址,lb后跟提供服务的微服务的名,不要写错
          #设置路由断言,代理servicerId为service-cosumer的/api/路径
          predicates:
           - Path=/*/consumer/**  #断言,路径相匹配的进行路由


        - id: service-provider  #路由的ID,没有固定规则但要求唯一,简易配合服务名
            #设置路由的uri
          uri: lb://service-provider  #匹配后提供服务的路由地址,lb后跟提供服务的微服务的名,不要写错
            #设置路由断言,代理servicerId为service-cosumer的/api/路径
          predicates:
            - Path=/*/provider/**  #断言,路径相匹配的进行路由

        - id: server-msm
          uri: lb://server-msm
          predicates:
            - Path=/*/msm/**

        - id: server-oss
          uri: lb://server-oss
          predicates:
             - Path=/*/oss/**
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

测试SDK

创建存储空间

public class OssTest {
    public static void main(String[] args) {
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        String accessKeyId = "xxxxx";
        String accessKeySecret = "xxxx";
        String bucketName = "yygh-zysheep-testoss";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 创建存储空间。
        ossClient.createBucket(bucketName);

        // 关闭OSSClient。
        ossClient.shutdown();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

封装service接口

1.创建FileService上传接口

public interface FileService {
    //上传文件到阿里云oss
    String upload(MultipartFile file);
}
  • 1
  • 2
  • 3
  • 4

2.创建ConstantOssPropertiesUtils配置类

@Component
public class ConstantOssPropertiesUtils implements InitializingBean {

    @Value("${aliyun.oss.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.oss.secret}")
    private String secret;

    @Value("${aliyun.oss.bucket}")
    private String bucket;

    public static String EDNPOINT;
    public static String ACCESS_KEY_ID;
    public static String SECRECT;
    public static String BUCKET;

    @Override
    public void afterPropertiesSet() throws Exception {
        EDNPOINT=endpoint;
        ACCESS_KEY_ID=accessKeyId;
        SECRECT=secret;
        BUCKET=bucket;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

3.创建接口类实现类

@Service
public class FileServiceImpl implements FileService {
    @Override
    public String upload(MultipartFile file) {
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        String endpoint = ConstantOssPropertiesUtils.EDNPOINT;
        String accessKeyId = ConstantOssPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantOssPropertiesUtils.SECRECT;
        String bucketName = ConstantOssPropertiesUtils.BUCKET;
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传文件流。
            InputStream inputStream = file.getInputStream();
            String fileName = file.getOriginalFilename();
            //生成随机唯一值,使用uuid,添加到文件名称里面
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            fileName = uuid+fileName;
            //按照当前日期,创建文件夹,上传到创建文件夹里面
            //  2021/02/02/01.jpg
            String timeUrl = new DateTime().toString("yyyy/MM/dd");
            fileName = timeUrl+"/"+fileName;
            //调用方法实现上传
            ossClient.putObject(bucketName, fileName, inputStream);
            // 关闭OSSClient。
            ossClient.shutdown();
            //上传之后文件路径
           // https://yygh-atguigu.oss-cn-beijing.aliyuncs.com/01.jpg
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            //返回
            return url;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

封装controller接口

返回上传成功后的url地址,在前端显示

@RestController
@RequestMapping("/api/oss/file")
public class FileApiController {
    @Autowired
    private FileService fileService;
    //上传文件到阿里云oss
    @PostMapping("fileUpload")
    public Result fileUpload(MultipartFile file) {
        //获取上传文件
        String url = fileService.upload(file);
        return Result.ok(url);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

swagger测试

1.访问http://localhost:9993/swagger-ui.html
在这里插入图片描述
2.try it out
在这里插入图片描述
3.查看阿里云oss控制台,上传成功
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/379478
推荐阅读
相关标签
  

闽ICP备14008679号