简介
对象存储服务(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 直接 使用
![](https://img.haomeiwen.com/i1309984/12e80991acb1f158.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
![](https://img.haomeiwen.com/i1309984/61d7024e947e683a.png)
需要五个参数
![](https://img.haomeiwen.com/i1309984/b41137760ef21232.png)
多了一个参数
上传
例如android
![](https://img.haomeiwen.com/i1309984/6ede039baf9a204d.png)
![](https://img.haomeiwen.com/i1309984/9dd48d65411268e4.png)
两个参数
上传
![](https://img.haomeiwen.com/i1309984/0031389b93a15bdf.png)
多了一个参数
就是六个参数。android 的OSSAuthCredentialsProvider 里用的sts 是什么东西,
进入后看到下面
![](https://img.haomeiwen.com/i1309984/2b121551ec4e3359.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"
}
}
}
其它
阿里云有三种方式权限
![](https://img.haomeiwen.com/i1309984/8200c32e8a5e57a5.png)
案例使用的是sts 方法。
阿里云STS(Security Token Service)是阿里云提供的一种临时访问权限管理服务。RAM提供RAM用户和RAM角色两种身份。其中,RAM角色不具备永久身份凭证,而只能通过STS获取可以自定义时效和访问权限的临时身份凭证,即安全令牌(STS Token)。
expiration 就是过期的时间。
网友评论