Java访问QingCloud青云QingStor对象存储(公有云、私有云)

news/2024/7/24 4:56:01 标签: java, 青云, 对象存储, QingStor, 青云私有云

一、参考API

官网SDK文档参考:Java SDK - 公有云文档中心 (qingcloud.com)

二、环境说明

公有云跟私有云区别:

        使用公有云QingStor,直接按照官网sdk直接可对接,私有云QingStor的话,需要设置具体的私有云请求地址及zoneName,具体如何识别,如下:

  •  创建完成后看到bucketName列表的URL字段
java">
https://testbk.pek3b.qingstor.com
解释说明:
https         协议  
testbk        bucketName
pek3b         zoneName 
qingstor.com  请求地址

三、具体使用

连接QingStor需要的参数信息:

#参数说明
1endPoint请求地址,即URL中的协议+请求地址,公有云不填,私有云根据信息拼接如:https://qingstor.com
2akAK(Access Key ID):访问密钥ID
3skSK(Secret Access Key):与访问密钥ID结合使用的密钥
4zoneName你的bucket所在的zone,比如pek3a
5bucketNamebucket名称,如果没有创建先从控制台或者api创建bucket

代码示例

java">引入依赖
<dependency>
    <groupId>com.yunify</groupId>
    <artifactId>qingstor.sdk.java</artifactId>
    <version>2.5.1</version>
 </dependency>
java">String endPoint ="";//私有云需设置
public String ak="";//AK(Access Key ID):访问密钥ID
public String sk="";//SK(Secret Access Key):与访问密钥ID结合使用的密钥
public String zoneName="pek3b";//你的bucket所在的zone,比如pek3a
public String bucketName ="testbk";//bucket名称,如果没有创建先从控制台或者api创建bucket

public void testQingStor() {
        try {
            EnvContext env = new EnvContext(ak, sk);
            //私有云设置
            if (StringUtils.isNotBlank(endPoint)) {
                env.setEndpoint(endPoint);
            }
            // 获取QingStor对象
            QingStor qingstor = new QingStor(env);
            // 获取Bucket对象
            Bucket bucket = qingstor.getBucket(bucketName, zoneName);

            
            //【1】获取账户下的 Bucket 列表
            QingStor.ListBucketsOutput listBucketsOutput = qingstor.listBuckets(null);
            System.out.println("获取账户下的 Bucket 列表 ");
            ObjectMapper mapper = new ObjectMapper();
            String jsons = mapper.writeValueAsString(listBucketsOutput);
            System.out.println("获取账户下的 Bucket 列表 " + jsons);
            //【2】上传文件测试
            File f = new File("C:\\12.jpg");
            Bucket.PutObjectInput input = new Bucket.PutObjectInput();
            // input 可以设置 File, Stream 等作为要上传的内容.
            input.setBodyInputFile(f);
            // 可选设置.
            //            input.setContentType();
            input.setContentLength(f.length());
            Bucket.PutObjectOutput putObjectOutput = bucket.putObject(f.getName(), input);
            
            //【3】获取所有文件清单
            Bucket.ListObjectsOutput listObjectsOutput = bucket.listObjects(null);
            
            //【4】获取文件 转存至本地
            String key="12.jpg";
            Bucket.GetObjectInput headObjectInput = new Bucket.GetObjectInput();
            Bucket.GetObjectOutput output = bucket.getObject(key, headObjectInput);

            try {
                InputStream inputStream = output.getBodyInputStream();
                File tmp = File.createTempFile("lzq", ".jpg", new File("C:\\"));
                OutputStream os = new FileOutputStream(tmp);
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                    os.write(buffer, 0, bytesRead);
                }
                inputStream.close();
                if (output.getStatueCode() != 200) {

                }
            } catch (IOException e) {
                e.printStackTrace();
            }

            
            System.out.println(1);
        } catch (QSException e) {
            e.printStackTrace();
        }
    }

四、验证查看

配置好参数后,执行测试脚本。

最后登录对象存储控制台查看文件资源:

 

 


http://www.niftyadmin.cn/n/378959.html

相关文章

编程之美:揭示Python装饰器的神秘面纱

Python是一种广泛使用的高级编程语言&#xff0c;它的语法简洁明了&#xff0c;且内置了丰富的数据处理和计算功能。其中&#xff0c;装饰器&#xff08;Decorator&#xff09;是Python中的一个特色功能&#xff0c;它可以让我们以更优雅、更方便的方式来修改或增强函数和方法的…

智能家居家电上应用的触摸芯片有哪些?

电容式触摸芯片&#xff0c;具有灵敏度高、抗干扰能力强&#xff0c;防水防尘、高可靠性等优点已逐步替代传统机械式按钮&#xff0c;广泛应用于家电、智能家居、消费电子、工控等领域。 触摸感应可以穿透绝缘材质检测人体手指带来的电荷移动&#xff0c;从而判断人体手指触摸…

快进来,一起复习一下抽象类和接口

背景 工作也有四年了&#xff0c;基础的东西许久不看有些遗忘。一起来复习一下吧 语法区别 构造方法&#xff1a;抽象类可以有构造方法&#xff0c;接口中不能有构造方法 成员变量&#xff1a;抽象类和接口中都可以包含静态成员变量&#xff0c;抽象类中的静态成员变量的访问…

UFS 2 -UFS架构简介2

UFS 2 -UFS架构简介2 1 UFS架构简介1.1 System Boot and Enumeration1.2 UFS Interconnect (UIC) Layer1.2.1 UFS Physical Layer Signals1.2.2 MIPI UniPro1.2.3 MIPI UniPro Related Attributes 1.3 UFS Transport Protocol (UTP) Layer1.3.1 Architectural Model1.3.1.1 Cli…

玩转ChatGPT:Transformer分类模型

一、写在前面 之前&#xff0c;我们介绍了Sklearn包以及Boost辈的各种分类模型&#xff0c;这些模型都很经典了&#xff0c;实际上也很强大&#xff0c;比如说Xgboost。 然而&#xff0c;近期随着ChatGPT的大火&#xff0c;其底层框架Transformer也逐渐火了&#xff0c;现在大…

Django框架之验证码简单实现

是一种方式防止csrf的策略。在用户注册、登录页面的时候使用&#xff1b;为了防止暴力请求&#xff0c;减轻服务器压力。 目录 安装pillow库 验证码显示 引入类库 视图方法 创建路由 创建表单 模板内容 模板路由 模板视图 视图验证 路由 引入 验证视图 效果 成功…

搭建一个vuepress静态网站及配置

搭建一个vuepress静态网站及配置 一、搭建一个vuepress网站1、创建并进入一个新目录2、初始化3、安装依赖4、创建文档5、配置启动命令及启动6、展示效果 二、配置及丰富vuepress网站1、增加配置文件2、配置侧边栏目录3、使用部分markdown语法完善页面 一、搭建一个vuepress网站…

带大家来认识下SUMIF函数

如果您需要在Excel表格中对特定条件下的数据进行求和&#xff0c;那么SUMIF函数是一个非常有用的工具。SUMIF函数允许您在满足指定条件的情况下&#xff0c;将符合条件的单元格的值相加起来。在本文中&#xff0c;我们将向您介绍如何使用SUMIF函数来处理您的表格数据。 如下图…