JAVA对接OBS对象存储实践【玩转华为云】

举报
tea_year 发表于 2025/01/24 08:07:01 2025/01/24
【摘要】 随着云计算的快速发展,对象存储成为了一种越来越流行的数据存储方式。华为云OBS(Object Storage Service,对象存储服务)作为华为云的一项核心服务,提供了高可靠、低成本、可扩展的云存储解决方案。在云计算、大数据等领域有着广泛的应用。通过学习和使用OBS,我们可以更好地管理和存储大量的数据,提高数据的安全性和可靠性,提高工作效率和服务质量。

任务

最近金融项目上需要开发一个服务去和华为云OBS集成存储业务上的文件,此处记录一下JAVA集成华为云OBS使用,希望对大家快速入门有所帮助

随着云计算的快速发展,对象存储成为了一种越来越流行的数据存储方式。华为云OBS(Object Storage Service,对象存储服务)作为华为云的一项核心服务,提供了高可靠、低成本、可扩展的云存储解决方案。

一.技术选型

在众多的云存储服务厂商中,为什么要选择华为云作为项目的首选呢?

稳定可靠

海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。

超高性能

千万级TPS,2.4Gb/s单流上传、下载

安全可信

支持细粒度访问控制、加密、审计等功能

极简管理

提供控制台、命令行工具等途径管理海量对象

. 创建对象存储空间

2.1创建华为云账号

如果您还没有华为云账号,可以先注册一个。注册成功后,登录华为云控制台,在对象存储服务(OBS)中创建一个存储桶(Bucket)。存储桶的名称必须是全局唯一的,并且符合DNS命名规范。

华为云官网地址:

https://www.huaweicloud.com/

2.2开通对象存储服务https://console.huaweicloud.com/console/?region=cn-east-3&locale=zh-cn#/obs/buy

第一次使用华为云提供有面试试用时长,可以放心使用,针对企业级用户直接购买即可。

2.3新建存储空间

点击:创建桶,选择:区域,填写:桶名称,选择:

2.4上传文件

在桶列表中,选择自己的桶,点击进入,点击上传对象,就可以把本地文件上传到桶里。

2.5获取上传密钥

首先你需要获取到华为云的(AK/SK),具体如何获取,请参考:

https://support.huaweicloud.com/api-obs/obs_04_0116.html

.代码对接OBS

3.1 官网提供SDK开发包

<dependency>

<groupId>com.huaweicloud</groupId>

<artifactId>esdk-obs-java-bundle</artifactId>

<version>[3.21.11,)</version>

</dependency>

3.2 上传测试类

import java.io.File;import java.io.FileInputStream;import java.io.IOException;

import com.obs.services.ObsClient;import com.obs.services.model.ObjectMetadata;import com.obs.services.model.PutObjectRequest;

public class UploadFileToOBS {

public static void main(String[] args) throws IOException {

// 配置OBS连接信息

String endPoint = "obs.cn-east-3 .myhuaweicloud.com";

String ak = "AccessKey";

String sk = "SecretKey";

String bucketName = "zhifu-pro ";

// 创建OBS客户端

ObsClient obsClient = new ObsClient(ak, sk, endPoint);
// 创建上传请求

String objectKey = "my-key.zip";

File file = new File("E://1.jpg"); //待上传文件

ObjectMetadata metadata = new ObjectMetadata();

metadata.setContentLength(file.length());

PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, new FileInputStream(file), metadata);

// 执行上传操作

obsClient.putObject(request);

// 关闭OBS客户端

obsClient.close();

}

}

首先配置了OBS连接信息,包括OBS服务的EndPoint、Access Key、Secret Key和Bucket名称。然后,创建OBS客户端,并创建上传请求。上传请求中包括要上传的文件、文件的元数据和存储桶名称等信息。最后,执行上传操作并关闭OBS客户端。

3.3 下载测试类

/**

*

*文件下载转换为二进制流

* @param url

* @return

*/

public static byte[] downloadToFile(String url){

byte[] base64Str1=null;

//截取文件名称

String objectName = url.substring(url.lastIndexOf("/")+1);

// 创建OBSClient实例。

ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endpoint);

ObsObject obsObject = obsClient.getObject(bucketName, objectName);

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

try {

InputStream inStream = obsObject.getObjectContent();

byte[] buffer = new byte[1024];

int len = -1;

while((len = inStream.read(buffer)) != -1){

outStream.write(buffer, 0, len);

}

outStream.close();

inStream.close();

base64Str1= outStream.toByteArray();//变成了二进制数组

} catch (IOException ex) {

ex.printStackTrace();

}

return base64Str1;

}

需要注意的是,在实际使用中,我们还需要处理异常和关闭OBS客户端对象以及涉及到同名文件重复问题,可以添加唯一key算法校验设置即可。在企业实际应用中,针对常用的工具类,都可以做下二次封装,包含桶对象的业务操作,实际文件数据的操作,从而简化应用使用者的难度。

总结

在本篇实践中,我们介绍了华为云OBS的概念和特点,以及如何使用Java代码将大文件上传到OBS。OBS作为一种高可用、高可靠、高性能的对象存储服务,在云计算、大数据等领域有着广泛的应用。通过学习和使用OBS,我们可以更好地管理和存储大量的数据,提高数据的安全性和可靠性,提高工作效率和服务质量。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。