阿里云对象存储OSS的开通和使用

阿里云对象存储OSS的开通和使用

前言:

本博客的实战部分是针对我做的SpringBoot+Vue在线教育项目而写的。

一、开通阿里云OSS

1 进入阿里云官网,找到阿里云对象存储OSS入口
在这里插入图片描述
2 点击对象存储OSS
在这里插入图片描述
3 点击开通服务
在这里插入图片描述
4 同意协议,点击立即开通
在这里插入图片描述
5 点击管理控制台
在这里插入图片描述
6 点击创建Bucket
在这里插入图片描述
7 创建Bucket
在这里插入图片描述
8 上传文件
在这里插入图片描述
9 随便上传一张图片
在这里插入图片描述
10 现在可以查看图片,可以看到URL信息
在这里插入图片描述

二、开通AccessKey

1 点击AccessKey
在这里插入图片描述
2 继续使用AccessKey
在这里插入图片描述
3 手机验证
在这里插入图片描述
4 可以看到秘钥信息
在这里插入图片描述
5 点击保存AK信息,会自动下载一个csv文件
在这里插入图片描述
6 点击学习路径
在这里插入图片描述
7 点击Java SDK
在这里插入图片描述
8 可以查看阿里云OSS的官方文档
在这里插入图片描述

三、项目实战 使用Java SDK操作OSS

结合我的Springboot+Vue在线教育项目,整合阿里云OSS

1 首先需要引入阿里云OSS相关依赖,可参考官方文档

			<!--aliyunOSS-->
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>${aliyun.oss.version}</version>
            </dependency>

2 在service层创建service_oss模块
在这里插入图片描述
3 在pom.xml中添加依赖

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

        <!-- 日期工具栏依赖 -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
</dependencies>

4 编写配置文件application.properties
注意:OSS相关配置前后不能加空格

# 端口号
server.port=8002
# 服务名
spring.application.name=service-oss
# 环境设置
spring.profiles.active=dev

# 集成阿里云OSS
aliyun.oss.file.endpoint=
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
# bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=

5 写启动类 OssApplication.java
注意: 要排除掉数据源加载,需要在SpringBootApplication上增加execude=DataSourceAutoConfiguration.class

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//不加载数据源
@ComponentScan(basePackages = {"com.atguigu"})
public class OssApplication {

    public static void main(String[] args) {
        SpringApplication.run(OssApplication.class,args);
    }
}

6 写配置工具类
注意:该工具类需要加上Component注解,且需要实现InitializingBean接口,重写afterPropertiesSet()方法,目的是利用定义的私有属性。

//当项目一启动,spring有一个接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean {//一启动项目,这个类就会初始化

    //读取配置文件的内容
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.file.keyid}")
    private String keyId;

    @Value("${aliyun.oss.file.keysecret}")
    private String keySecret;

    @Value("${aliyun.oss.file.bucketname}")
    private String bucketName;

    //定义公开静态常量

    public static String END_POINT;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT = endpoint;
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}

7 service层

可以查看阿里云OSS官方文档,进行修改
在这里插入图片描述

OssService.java

public interface OssService {
    //上传头像到OSS
    String uploadOssFileAvatar(MultipartFile file);
}

OssServiceImpl.java

注意:为什么要返回上传对象最终的url,因为controller要将该url作为响应体信息传入。阿里云OSS官方文档并没有发现直接获取该url的方法,需要手动拼接字符串。

@Service
public class OssServiceImpl implements OssService {
    @Override
    public String uploadOssFileAvatar(MultipartFile file) {

        //通过工具类获取
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;


        // 上传文件流。
        InputStream inputStream = null;
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 获取上传文件输入流
            inputStream = file.getInputStream();
            // 获取文件名称
            String filename = file.getOriginalFilename();

            // 调用oss方法实现上传
            // 第一个参数: Bucket名称 第二个参数: 上传到oss文件路径和文件名称 /aa/bb/1.jpg 第三个参数: 上传文件的输入流

            ossClient.putObject(bucketName, filename, inputStream);

            // 关闭OSSClient。
            ossClient.shutdown();

            // 把上传之后的文件路径返回
            //            https://edu-0912.oss-cn-beijing.aliyuncs.com/4c480a7029cbea756e87d34940654825.jpg
            return "https://" + bucketName + "." + endpoint + "/" + filename;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}

8 controller
注意:需要在controller上添加@CrossOrign注解,开放跨域请求

@RestController
@RequestMapping(path = "/eduoss")
@CrossOrigin
public class OssController {

    @Autowired
    private OssService ossService;

    //上传头像的方法
    @PostMapping("/uploadOssFile")
    public R uploadOssFileAvatar(MultipartFile file){
        //获取上传的文件 MultipartFile
        String url = ossService.uploadOssFileAvatar(file);

        return R.ok().data("url",url);
    }
}

9 启动工程,Swagger测试
进入swagger,可以开始调试了
在这里插入图片描述
10 上传文件
在这里插入图片描述
11 OSS后台查看,可以发现多了一张图片
在这里插入图片描述
12 项目结构
service_oss模块的作用是给讲师添加头像
在这里插入图片描述

结语:

在这里插入图片描述

水平有限,仅供参考,若有纰漏,希望随时指出!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱旅行的小李同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值