天翼云 Java对接OBS对象存储

天翼云 对接OBS对象存储


前言

  1. 最近公司帮国企做一个项目,对方要求云厂商使用电信天翼云,我们之前一直都在使用阿里云,因为国企情况比较特殊,优先考虑国资背景的云厂商;
  2. 最近才改造完rocketMQ,现在需要改造对象文件存储这快,从阿里云的OSS改成天翼云的OBS,没有对比就没有伤害,天翼云OBS的文档资料太少太少了,开发文档有是有,但文档里面没有demo实例,没有SDK,只有一些方式请求示例,可用性为0, 我人都傻了;没办法,问题还得解决,找了电信云方面对接人,通过沟通才拿到一份文档,结果一打开文档署名是华为云OBS开发文档…我还以为对方弄错了,通过确定才知道文档没发错,确实是华为云的OBS,有点离谱,我不知道是不是电信套了一层,底层还是华为云,这个就不纠结了,先解决问题;
  3. 我写这篇博客的原因是,当时我找这方面的博客资料太少了,大多跟我的情况不一样,所以想着写一篇博客,给有需要的朋友,如果接入的不是电信对象存储OBS的朋友就不用接着往下看了,别浪费大伙宝贵的时间
  4. 如图:
    在这里插入图片描述

正文
一. 前置准备

  1. AK, SK
    在这里插入图片描述
  2. 自己创建一个桶
    在这里插入图片描述
  3. endPoint, 点击创建好的桶进去后,关于这个桶的所属终端节点信息,后续需要用上
    在这里插入图片描述
    二.Maven依赖
        <!--华为云 对象存储OBS-->
        <dependency>
            <groupId>com.huaweicloud</groupId>
            <artifactId>esdk-obs-java-bundle</artifactId>
            <version>[3.21.8,)</version>
        </dependency>

三. 我就简单列举两个例子, 还有我把华为云的开发文档链接放在下面了,也可以去看看官方的文档

// obs 配置类
ObsConfiguration config = new ObsConfiguration();
        config.setSocketTimeout(30000);
        config.setConnectionTimeout(10000);
        config.setEndPoint(endPoint);
// obs 客户端
ObsClient obsClient = new ObsClient(ak, sk, config);


/**
* 示例: 上传文本对象
* bucketName: 桶名称
* objectKey: 对象key
* content: 文件内容
*/
String content = "文本内容";
obsClient.putObject(bucketName, objectKey, new ByteArrayInputStream(content.getBytes("UTF-8")), null);

/**
* 示例: 上传图片对象
* bucketName: 桶名称
* objectKey: 对象key
* file: 图片
*/
File file = new File("文件路径")
obsClient.putObject(bucketName, objectKey, file);


TODO 这里我备注一下,如果你想要获取上传对象能在公网访问的链接,分为两种情况
1.你桶的访问权限设置为公开的,这种情况就不需要通过api方式获取公网链接,直接用: bucketName.endPoint/objectKey (举例: rt-obs-public.obs.cn/文件名) 这样就能访问你上传的文件了
2.你桶的访问权限设置为私有,这种情况就需要通过api方式获取公网链接,示例在下面
/**
* 示例: 获取上传对象在公网中能访问的链接
* 
* expirationTime: 链接有效时间 单位: 秒
* bucketName: 桶名称
* objectKey: 对象key
* file: 图片
*/
try {
            TemporarySignatureRequest req = new TemporarySignatureRequest(HttpMethodEnum.GET, expirationTime);
            req.setBucketName(bucketName);
            req.setObjectKey(objectKey);
            TemporarySignatureResponse res = obsClient.createTemporarySignature(req);
            System.out.println("公网能访问的URL:" + res.getSignedUrl())
        } catch (Exception e) {
            log.error("下载图片失败", e);
        }

四.华为云的文档地址,大家可以去看看
华为云 对象存储OBS开发手册

最后,希望这篇博客对大家有用

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
你可以使用 Java SDK 来实现华为对象存储OBS的文件上传。以下是一个简单的示例代码: ```java import java.io.File; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.PutObjectResult; public class ObsUploadDemo { public static void main(String[] args) throws KeyManagementException, NoSuchAlgorithmException, ObsException, IOException { // 创建ObsClient对象 ObsClient obsClient = new ObsClient("yourAccessKeyId", "yourSecretAccessKey", "yourEndpoint"); // 设置bucket名称和对象名称 String bucketName = "yourBucketName"; String objectKey = "yourObjectName"; // 设置本地文件路径 String filePath = "yourLocalFilePath"; // 上传文件 File file = new File(filePath); PutObjectResult result = obsClient.putObject(bucketName, objectKey, file); // 打印上传结果 System.out.println("请求ID:" + result.getRequestId()); System.out.println("ETag:" + result.getEtag()); // 关闭ObsClient对象 obsClient.close(); } } ``` 其中,`yourAccessKeyId` 和 `yourSecretAccessKey` 分别是你的华为账号的Access Key ID 和 Secret Access Key;`yourEndpoint` 是你的OBS服务的访问域名;`yourBucketName` 是你要上传的存储桶名称;`yourObjectName` 是你要上传的对象名称;`yourLocalFilePath` 是你要上传的本地文件路径。 注意,以上代码仅作为示例,实际使用时需要根据你的具体情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值