阿里云对象存储OSS介绍及创建
阿里云对象存储OSS(Object StorageService)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。
OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent
Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。
在阿里云首页搜索对象存储并开通(免费),找到创建Bucket,如下选择满足自己需求的选项创建Bucket;
点击右上角头像选择AccessKey管理新建子账号并提供访问秘钥以便程序访问;
点击创建,并选择Open API调用访问;
如图,及时保存AccessKey ID,AccessKey Secret,接下来不会复现,且我们程序中将用到;
接下来点击添加权限,将此子账号添加oss权限;
对象存储安装及使用
Java程序调用添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
测试代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class CubemallProductApplicationTests {
@Autowired
private OSSClient ossClient;
@Test
public void test() throws FileNotFoundException {
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "oss-cn-hangzhou.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "YourAccessKeyId";
String accessKeySecret = "YourAccessKeySecret";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = new FileInputStream("/XXX/test.jpg");
// 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
ossClient.putObject("XXX", "WZaqP-TnEuI2.jpg", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
System.out.println("上传成功");
}
}
注解方式自动注入
yml文件配置
spring:
cloud:
alicloud:
oss:
endpoint: oss-cn-hangzhou.aliyuncs.com
access-key: YourAccessKeyId
secret-key: YourAccessKeySecret
测试代码
public void test2() throws FileNotFoundException {
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = new FileInputStream("/XXX/test.jpg");
// 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
ossClient.putObject("XXX", "WZaqP-TnEuI2.jpg", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
System.out.println("上传成功");
}
上传结果展示: