开通对象存储OSS服务的步骤如下:申请阿里云账号->实名认证->开通对象存储OSS服务->进入管理控制台.
(1)首先创建Bucket
bucket名称:subtle-chat,设置读写权限公共读。
(1)进入子用户管理页面
(2)添加用户
进入RAM访问控制后台创建新用户
(3)获取子用户key
完成用户创建之后,获取AccessKeyId, AccessKeySecret,并保存起来。因为关闭界面后无法再次获取。
(4)设置用户权限
设置用户权限,添加AliyunOSSFullAccess(管理对象存储服务(OSS)权限)的权限
进入OSS学习路径界面:https://help.aliyun.com/learn/learningpath/oss.html
创建Maven项目,并配置pom,添加以下依赖:
<dependencies>
<dependency>
<groupId>com.aliyun.ossgroupId>
<artifactId>aliyun-sdk-ossartifactId>
<version>3.10.2version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
dependency>
dependencies>
public class OSSTest {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "ttp://oss-cn-beijing.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "your accessKeyId";
String accessKeySecret = "your accessKeySecret";
String bucketName = "subtle-chat";
@Test
public void testCreateBucket() {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 创建CreateBucketRequest对象。
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
// 创建存储空间。
ossClient.createBucket(createBucketRequest);
// 关闭OSSClient。
ossClient.shutdown();
}
}
@Test
public void testExist() {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
boolean exists = ossClient.doesBucketExist(bucketName);
System.out.println(exists);
// 关闭OSSClient。
ossClient.shutdown();
}
@Test
public void testAccessControl() {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 设置存储空间的访问权限为:公共读。
ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
// 关闭OSSClient。
ossClient.shutdown();
}
上传文件demo代码:
@Test
public void testFileUpload() {
// 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
//group-chat对应bucket中的目录名
String objectName = "group-chat/exampleobject.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
} catch (OSSException e) {
e.printStackTrace();
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
下载文件demo代码:
@Test
public void testFileDownload() {
// 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
//group-chat对应bucket中的目录名
String objectName = "group-chat/exampleobject.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
InputStream content = ossObject.getObjectContent();
if (content != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println("\n" + line);
}
// 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
content.close();
}
} catch (OSSException | IOException e) {
e.printStackTrace();
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
删除文件demo代码:
@Test
public void testFileDelete() {
// 填写文件名。文件名包含路径,不包含Bucket名称。例如exampledir/exampleobject.txt。
//group-chat对应bucket中的目录名
String objectName = "group-chat/exampleobject.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 删除文件。
ossClient.deleteObject(bucketName, objectName);
} catch (OSSException e){
e.printStackTrace();
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
学习更多:https://help.aliyun.com/document_detail/32007.html