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

1、进入阿里云官网

https://www.aliyun.com/

2、搜索“对象存储OSS”

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第1张图片

3、进入“管理控制台”

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第2张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第3张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第4张图片

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

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

public class OssTest {
    public static void main(String[] args) {
        String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
        String accessKeyId = "LTAI5tRo9YESJJp2EjPscF1h";
        String accessKeySecret = "UhClPCgctvM0gZdcppsCc0vTMOVuKm";
        String bucketName = "sgg-yygh-syt-test";

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

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

        //关闭OSSClient
        ossClient.shutdown();

    }
}

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第5张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第6张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第7张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第8张图片

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

10、选择“AccessKey管理”

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第9张图片

11、点击“创建AccessKey”

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第10张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第11张图片

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


    com.aliyun.oss
    aliyun-sdk-oss
    3.15.1


    joda-time
    joda-time
    2.10.1
        

    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery
    2.2.0.RELEASE

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

# 服务端口
server.port=8205
# 服务名
spring.application.name=service-oss

#返回json的全局时间格式.
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm
aliyun.oss.bucket=sgg-yygh-syt

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第12张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第13张图片

aliyun.oss.bucket=sgg-yygh-syt

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第14张图片

15、添加启动类,SpringBootApplication的

(exclude=DataSourceAutoConfiguration.class)

和EnableDiscoveryClient注解看情况加

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
@EnableDiscoveryClient//开启nacos注册中心
@ComponentScan(basePackages = {"com.hospital"})//可以扫描到另一个模块的swagger
public class ServiceOssApplication {
    public static void main(String[] args) {
      SpringApplication.run(ServiceOssApplication.class, args);
   }
}

16、创建ConstantOssPropertiesUtils配置类

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@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;
    }
}

17、编写controller,service,serviceImpl

controller层:

import com.hospital.common.result.Result;
import com.hospital.oss.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/api/oss/file")
public class FileApiController {
    @Autowired
    private FileService fileService;

    @PostMapping("/fileUpload")
    public Result fileUpload(MultipartFile file){
        //获取上传文件
        String url = fileService.uploadFile(file);
        return Result.ok(url);
    }
}

service层:

import org.springframework.web.multipart.MultipartFile;

public interface FileService {
    //上传文件到阿里云oss
    String uploadFile(MultipartFile file);
}

serviceImpl层:

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.hospital.oss.service.FileService;
import com.hospital.oss.utils.ConstantOssPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@Service
public class FileServiceImpl implements FileService {

    @Override
    public String uploadFile(MultipartFile file) {
        //获取ConstantOssPropertiesUtils中的属性
        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;
        }
    }
}

18、swagger上传文件测试

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第15张图片

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

全网最详细SpringBoot、SpringCloud整合阿里云OSS对象存储服务_第16张图片

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

你可能感兴趣的:(阿里云,oss)