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

news2024/11/17 13:32:03

一、参考API

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

二、环境说明

公有云跟私有云区别:

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

  • 先登录对象存储控制台创建bucketName

  •  创建完成后看到bucketName列表的URL字段

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

代码示例

引入依赖
<dependency>
    <groupId>com.yunify</groupId>
    <artifactId>qingstor.sdk.java</artifactId>
    <version>2.5.1</version>
 </dependency>
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.coloradmin.cn/o/592678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中构造函数的名称

Python中构造函数的名称 作为一名有10年Python编程经验的工程师&#xff0c;我深知Python语言中构造函数的重要性。在本文中&#xff0c;我将着重介绍Python中构造函数的名称&#xff0c;并阐述其在Python编程中的作用。 什么是构造函数&#xff1f; 构造函数是一种特殊类型…

【C#学习记录】添加控件后工具箱不显示是什么原因

大家好&#xff0c;我是雷工&#xff01; 今天在一个Winform程序中用到将WindowsMediaPlayer控件添加到工具箱&#xff0c;但添加了好几次&#xff0c;工具箱内均无法显示&#xff0c;经翻找资料和验证确认是跟创建项目时选择的模板有关&#xff0c;为了遇到同样问题的小伙伴能…

荣获用友年度十佳产业融合生态伙伴称号 | 图扑软件

2023 年 4 月 20 日&#xff0c;由中华全国工商业联合会联合工业和信息化部、国务院国资委组织开展的 2023 年度“百场万企”大中小企业融通对接活动——智能制造 MES 产业融通对接会暨 2023 用友 BIP 技术大会 MES 生态创新专题论坛在用友产业园顺利召开。 用友年度生态合作伙…

C语言学习分享(第九次)------数据的存储

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C语言学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C语言知识   &#x1f51d;&#x1f51d; 数据的存储 1. 前言&#x1f6a9;2…

符合国情的supabase私有化部署(0)

符合国情的supabase私有化部署(0) 符合国情的supabase私有化部署(0) 前言开源 BaaS 解决方案快速开始 获取部署文件服务明细 容器启动后创建一个前端app注册邮箱SMTP协议jwt token和kong网关配置并应用更改数据库密码k8s 部署参考尾言常见问题 name resolution failedInvalid …

Python:Python编程:从入门到实践__超清版:Python标准库

Python标准库 1. OrderedDict2. threading三级目录 Python标准库是一组模块&#xff0c;按照的Python都包含了它&#xff0c;我们只需要在程序开头包含一条简单的 import 语句&#xff0c;就可以使用标准库中的任何函数和类。 下面我介绍几个重点 标准库 os : 提供一些与操作系…

Word控件Aspose.Words教程:使用 Java 处理 SXC 和 FODS 文件

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理&#xff0c;并…

NUC980编译错误,multiple target patterns(多个目标匹配)

1&#xff1a;问题&#xff1a; 昨天环境编译的还是没问题的&#xff0c;今天就出错了 &#xff1a; Makefile:133: *** multiple target patterns. Stop 此时&#xff1a;make make clean make disclean 都不可以使用了&#xff0c;报一样的错误。 2&#xff1a;解决办法&…

二叉搜索树的操作、模拟实现、应用以及性能的介绍

一、二叉搜索树 1. 性质 &#xff08;1&#xff09;如果左子树不是空&#xff0c;那么左子树上的所有节点的值都小于根节点的值 &#xff08;2&#xff09;如果右子树不是空&#xff0c;那么右子树上的所有节点的值都大于根节点的值 &#xff08;3&#xff09;左右子树也分别为…

Redis的网络模型

计算机硬件包括CPU&#xff0c;内存&#xff0c;网卡 为了避免用户应用和操作系统内核产生冲突乃至内核崩溃&#xff0c;用户应用和内核是隔离开的 1)进程的寻址空间会被划分成两部分&#xff0c;内核空间和用户空间&#xff0c;内核和用户应用都无法直接访问物理内存&#xff…

【Linux】在Ubuntu上部署web项目(Ubuntu版本为16.04.7,jdk1.8、mysql5.7、tomcat9.0.48)

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

河道水位监测:河道水位监测用什么设备

中国地形复杂&#xff0c;气候多样&#xff0c;导致水资源分布不均&#xff0c;洪涝和干旱等问题时有发生。同时&#xff0c;人类活动也对水资源造成了很大压力&#xff0c;工业和农业用水增加&#xff0c;河道水位下降&#xff0c;生态环境受到威胁。因此&#xff0c;对河道水…

【面向对象三大特性之继承】

目录 1.什么是继承2.父类成员访问2.1 子类访问父类的成员变量2.1.1 子类和父类不存在同名成员变量2.1.2 子类和父类存在同名成员变量 2.2子类中访问父类的成员方法2.2.1. 成员方法名字不同2.2.22. 成员方法名字相同 3.super关键字4.子类构造方法5.super和this的异同点6.代码块的…

可视化探索开源项目的 contributor 关系

引语&#xff1a;作为国内外最大的代码托管平台&#xff0c;根据最新的 GitHub 数据&#xff0c;它拥有超 372,000,000 个仓库&#xff0c;其中有 28,000,000 是公开仓。分布式图数据库 NebulaGraph 便是其中之一&#xff0c;同其他开源项目一样&#xff0c;NebulaGrpah 也有自…

用arcgis for javascript 开发一个三维地图(入门案例)

效果如图&#xff1a; 详细的步骤就不啰嗦介绍了&#xff0c;大家可以参考上一篇文章二维地图入门案例&#xff0c;这里只是改了一点引用和属性而已。 核心代码&#xff1a; SceneView 用于创建三维地图 require([“esri/Map”, “esri/views/SceneView”] 这里提一句有两种…

vue项目中的环境变量的应用

vue项目中的环境变量的应用 在Vue项目中使用环境变量可以方便地在开发、测试、生产等不同环境中进行配置&#xff0c;而无需修改代码。 项目根目录下创建一个.env文件或者.env.[mode]文件&#xff0c;其中mode表示开发、测试、生产等不同的环境&#xff0c;文件名的后缀部分指…

Python的分布式网络爬虫

分布式爬虫其实就是指利用多台计算机分布式地从互联网上采集数据的一种爬虫。它可以把大规模的任务分解成若干小规模的&#xff0c;由多台计算机并行进行处理&#xff0c;大大提高了效率和速度。 分布式爬虫有很多优势&#xff1a;解决单机爬虫效率低的问题&#xff0c;分布式…

【UR3系统升级到CB3.12附带URcap1.05】

【UR3系统升级到CB3.12附带URcap1.05】 1. 前言1.1 Polyscope 3.12更新须知1.2 更新步骤 2. 对 PSU 电压进行控制的步骤2.1 启动机器人电源2.2 启动机器人程序2.3 查看PSU 电压 3. Polyscope 3.12 软件下载3.1 CB 系列机器人3.2 下载软件包URUP 4. CB3 软件安装的指导4.1 连接示…

Kohl‘s百货的EDI需求详解

Kohls是一家美国的连锁百货公司&#xff0c;成立于1962年&#xff0c;总部位于美国威斯康星州的门多西。该公司经营各种商品&#xff0c;包括服装、鞋子、家居用品、电子产品、化妆品等&#xff0c;并拥有超过1,100家门店&#xff0c;分布在美国各地。本文将为大家介绍Kohls的E…

SDK接口远程调试【内网穿透】

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转发自cpolar内网穿透的文章&#xff1a;Java支付宝沙箱环境支付&#xff0…