美文网首页
springboot 集成阿里云oss

springboot 集成阿里云oss

作者: 客观开发者 | 来源:发表于2021-09-16 13:42 被阅读0次

简介

对象存储服务(Object Storage Service,简称OSS)

对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。
服务就是,给你提供对象存储,这项服务了。
当然不要认为只要一家 阿里云oss,国内很多,只是铺天盖地都是他的广告而已。

如何用

两种方式,
一种是后台提供接口,让前端或其他子系统调用,不需要他接触我使用的什么方法和储存的配置东西,就给一个文件进行放入到oss 里面
两种,后台值提高配置接口,剩下的你就这几调用他们的sdk里面内容就可以了。例如阿里云的就直接使用android 或ios sdk 配置就行了,你需要什么参数,我都会给你的。

所以介于这两种写的东西也不一样,各个工程师的理解也不一样。

初始化

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";

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

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

所以这样很简单了不少,这样就封装成一个bean 就可以了。

@Configuration
public class OssConfig {
    @Value("${aliyun.oss.endpoint}")
    private String ALIYUN_OSS_ENDPOINT;
    @Value("${aliyun.oss.accessKeyId}")
    private String ALIYUN_OSS_ACCESSKEYID;
    @Value("${aliyun.oss.accessKeySecret}")
    private String ALIYUN_OSS_ACCESSKEYSECRET;

    @Bean
    public OSSClient ossClient(){
        return new OSSClient(ALIYUN_OSS_ENDPOINT,ALIYUN_OSS_ACCESSKEYID,ALIYUN_OSS_ACCESSKEYSECRET);
    }
}

使用

  @Autowired
    private OSSClient ossClient;

接着就api 的使用了。。。
不同的 sdk存储方法不一样,参数也不一样。
这个是里java 直接 使用

image.png

还是原文档好点。这里这写流程了,因为思路比什么都重要。

方式1

后台工作量打一些,
写入两个方法就行,一个上传文件,一个删除文件

String objectName = "exampledir/exampleobject.txt";

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

String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));

删除

// 填写Bucket名称,例如examplebucket。
String bucketName = "examplebucket";
// 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
String objectName = "exampledir/exampleobject.txt";

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

// 删除文件。
ossClient.deleteObject(bucketName, objectName);

上传文件,是前台上传的时候用,删除,是他要删除的,你主动去调用。

方式2

不同平台使用不同的sdk ,就需要知道他们参数就可以了就行。
例如ios


image.png

需要五个参数


image.png
多了一个参数
上传
例如android
image.png
image.png

两个参数
上传


image.png
多了一个参数
就是六个参数。android 的OSSAuthCredentialsProvider 里用的sts 是什么东西,
进入后看到下面
image.png

原来和ios 一样,直接android 重构OSSFederationCredentialProvider 实现

@Override
    public OSSFederationToken getFederationToken() throws ClientException {
}

就可以了,一个接口就行了。
就给他结果就行了

{
    "returnCode": "200",
    "returnMsg": "操作成功",
    "returnData": {
        "endpoint": "x",
        "bucket": "x",
        "credentials": {
            "securityToken": "x",
            "accessKeySecret": "x",
            "accessKeyId": "x",
            "expiration": "x"
        }
    }
}

其它

阿里云有三种方式权限


image.png

案例使用的是sts 方法。
阿里云STS(Security Token Service)是阿里云提供的一种临时访问权限管理服务。RAM提供RAM用户和RAM角色两种身份。其中,RAM角色不具备永久身份凭证,而只能通过STS获取可以自定义时效和访问权限的临时身份凭证,即安全令牌(STS Token)。

expiration 就是过期的时间。

相关文章

网友评论

      本文标题:springboot 集成阿里云oss

      本文链接:https://www.haomeiwen.com/subject/aturgltx.html