腾讯云对象存储的在Java使用步骤介绍

腾讯云对象存储的在Java使用步骤介绍

创建一个腾讯云的账户

这个自己去创建,然后开通对象存储服务,如下

img

有了账号就要创建一个对象存储的桶,也就是存储对象的一个容器

如果你想只有自己放存放的就设置 私有读写 ,如果想用网络直接访问那就是 公有读私有写(虽然后期,可以改,但是还是这里直接设置读写权限,不然后期改很麻烦,还要设置啥消息模板,真离谱,我想设置然后还要开通业务,服了)

img

写了名称,访问权限就可以下一步了

当然要点击同意他的条款

img

上面这里我都是默认的,只点击了免费的版本控制。

下一步就直接可以创建了,就是展示一下你的选配而且

后买就是如何使用啦!

下面是 java 的案例

虽然官方推荐临时密钥,但是优点烦,如果是日常调试,我自己就是直接用了密钥了。

package com.five_dog_cat.backend;import com.qcloud.cos.utils.Jackson;
import com.tencent.cloud.CosStsClient;
import com.tencent.cloud.Policy;
import com.tencent.cloud.Response;
import com.tencent.cloud.Statement;import java.util.TreeMap;public class GetTempAllowForTXCos {// 根据 github 提供的 maven 集成方法导入 java sts sdk,使用 3.1.jpg.1.jpg 及更高版本public static void main(String[] args) {TreeMap<String, Object> config = new TreeMap<String, Object>();try {//这里的 SecretId 和 SecretKey 代表了用于申请临时密钥的永久身份(主账号、子账号等),子账号需要具有操作存储桶的权限。String secretId = "";//用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140String secretKey = "";//用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140// 替换为您的云 api 密钥 SecretIdconfig.put("secretId", secretId);// 替换为您的云 api 密钥 SecretKeyconfig.put("secretKey", secretKey);// 初始化 policyPolicy policy = new Policy();// 设置域名:// 如果您使用了腾讯云 cvm,可以设置内部域名//config.put("host", "sts.internal.tencentcloudapi.com");// 临时密钥有效时长,单位是秒,默认 1800 秒,目前主账号最长 2 小时(即 7200 秒),子账号最长 36 小时(即 129600)秒config.put("durationSeconds", 1800);// 换成您的 bucketconfig.put("bucket", "fwwb2024-1317992681");// 换成 bucket 所在地区config.put("region", "ap-shanghai");// 开始构建一条 statementStatement statement = new Statement();// 声明设置的结果是允许操作statement.setEffect("allow");/*** 密钥的权限列表。必须在这里指定本次临时密钥所需要的权限。* 权限列表请参见 https://cloud.tencent.com/document/product/436/31923* 规则为 {project}:{interfaceName}* project : 产品缩写  cos相关授权为值为cos,数据万象(数据处理)相关授权值为ci* 授权所有接口用*表示,例如 cos:*,ci:** 添加一批操作权限 :*/statement.addActions(new String[]{"cos:PutObject",// 表单上传、小程序上传"cos:PostObject",// 分块上传"cos:InitiateMultipartUpload","cos:ListMultipartUploads","cos:ListParts","cos:UploadPart","cos:CompleteMultipartUpload",// 处理相关接口一般为数据万象产品 权限中以ci开头// 创建媒体处理任务"ci:CreateMediaJobs",// 文件压缩"ci:CreateFileProcessJobs"});/*** 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径* 资源表达式规则分对象存储(cos)和数据万象(ci)两种* 数据处理、审核相关接口需要授予ci资源权限*  cos : qcs::cos:{region}:uid/{appid}:{bucket}/{path}*  ci  : qcs::ci:{region}:uid/{appid}:bucket/{bucket}/{path}* 列举几种典型的{path}授权场景:* 1.jpg、允许访问所有对象:"*"* 2、允许访问指定的对象:"a/a1.txt", "b/b1.txt"* 3、允许访问指定前缀的对象:"a*", "a/*", "b/*"*  如果填写了“*”,将允许用户访问所有资源;除非业务需要,否则请按照最小权限原则授予用户相应的访问权限范围。** 示例:授权examplebucket-1250000000 bucket目录下的所有资源给cos和ci 授权两条Resource*/statement.addResources(new String[]{"qcs::cos:ap-shanghai:uid/1317992681:fwwb2024-1317992681/*","qcs::ci:ap-shanghai:uid/1317992681:bucket/fwwb2024-1317992681/*"});// 把一条 statement 添加到 policy// 可以添加多条policy.addStatement(statement);// 将 Policy 示例转化成 String,可以使用任何 json 转化方式,这里是本 SDK 自带的推荐方式config.put("policy", Jackson.toJsonPrettyString(policy));Response response = CosStsClient.getCredential(config);System.out.println(response.credentials.tmpSecretId);System.out.println("-----");System.out.println(response.credentials.tmpSecretKey);System.out.println("-----");System.out.println(response.credentials.sessionToken);} catch (Exception e) {e.printStackTrace();throw new IllegalArgumentException("no valid secret !");}}
}
上传的DEMO

这里用的是临时密钥,从上面的代码通过获取的来的。

package com.five_dog_cat.backend;// 根据 github 提供的 maven 集成方式导入 cos xml java sdkimport com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicSessionCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.region.Region;import java.io.File;public class Demo {public static void main(String[] args) throws Exception {// 用户基本信息String tmpSecretId = "--OIb-sB";   // 替换为 STS 接口返回给您的临时 SecretIdString tmpSecretKey = "/OrY7ykx/=";  // 替换为 STS 接口返回给您的临时 SecretKeyString sessionToken = "---6ui-G5EJ-XC9Suz0L--------jNT-";// 1.jpg 初始化用户身份信息(secretId, secretKey)COSCredentials cred = new BasicSessionCredentials(tmpSecretId, tmpSecretKey, sessionToken);// 2 设置 bucket 区域,详情请参见 COS 地域 https://cloud.tencent.com/document/product/436/6224ClientConfig clientConfig = new ClientConfig(new Region("ap-shanghai"));// 3 生成 cos 客户端COSClient cosclient = new COSClient(cred, clientConfig);// bucket 名需包含 appidString bucketName = "fwwb2024-1317992681";// 上传 object, 建议 20M 以下的文件使用该接口File localFile = new File("1.jpg");String key =localFile.getName();PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,key, localFile);// 设置 x-cos-security-token header 字段ObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setSecurityToken(sessionToken);putObjectRequest.setMetadata(objectMetadata);try {PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);// 成功:putobjectResult 会返回文件的 etagString etag = putObjectResult.getETag();System.out.println(etag);} catch (CosServiceException e) {//失败,抛出 CosServiceExceptione.printStackTrace();} catch (CosClientException e) {//失败,抛出 CosClientExceptione.printStackTrace();}// 关闭客户端cosclient.shutdown();}
}
下载DEMO

这里我是直接使用密钥,因为用临时的时候总是说权限不够,很烦,就直接换了。

package com.five_dog_cat.backend;import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.COSObject;
import com.qcloud.cos.model.COSObjectInputStream;
import com.qcloud.cos.model.GetObjectRequest;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.region.Region;import java.io.File;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {
// 1 初始化用户身份信息(secretId, secretKey)。
// SECRETID 和 SECRETKEY 请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理String secretId = "";//用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140String secretKey ="";//用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置 bucket 的地域, COS 地域的简称请参见 https://cloud.tencent.com/document/product/436/6224
// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。Region region = new Region("ap-shanghai");ClientConfig clientConfig = new ClientConfig(region);
// 这里建议设置使用 https 协议
// 从 5.6.54 版本开始,默认使用了 httpsclientConfig.setHttpProtocol(HttpProtocol.https);
// 3 生成 cos 客户端。COSClient cosClient = new COSClient(cred, clientConfig);// Bucket 的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式String bucketName = "";
// 指定文件在 COS 上的路径,即对象键。例如对象键为 folder/picture.jpg,则表示下载的文件 picture.jpg 在 folder 路径下String key = "/1.jpg";
// 方法1 获取下载输入流GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);COSObject cosObject = cosClient.getObject(getObjectRequest);COSObjectInputStream cosObjectInput = cosObject.getObjectContent();
// 下载对象的 CRC64String crc64Ecma = cosObject.getObjectMetadata().getCrc64Ecma();
// 关闭输入流cosObjectInput.close();// 方法2 下载文件到本地的路径,例如 把文件下载到本地的 /path/to/路径下的localFile文件中String outputFilePath = ""; //这个要是一个文件。File downFile = new File(outputFilePath);getObjectRequest = new GetObjectRequest(bucketName, key);ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest,downFile);}
}

官方的SDK地址:https://cloud.tencent.com/document/product/436/6474

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/747606.shtml

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

相关文章

webstorm如何调试uniapp项目

1、webstorm安装Uniapp Tool项目&#xff0c;并根据要求配置Hbuilder和微信开发者工具&#xff1b; 2、运行/调试配置 3、运行uniapp项目&#xff0c;然后运行调试即可愉快的在webstorm上加断点调试了

【技术类-03】python实现docx表格文字的“手动换行符(软回车)”变成“段落标记(硬回车)”

作品展示——docx表格内的手动换行符更改硬回车 背景需求&#xff1a; 这篇成功把docx文本段落&#xff08;无表格&#xff09;中的“手动换行符&#xff08;软回车&#xff09;”变成“段落标记&#xff08;硬回车&#xff09;。 【技术类-02】python实现docx段落文字的“手…

企业内部培训考试系统单场培训会议解决方案

企业日常内训中&#xff0c;有些时候也会组织会议培训&#xff0c;再按照会议日程分上下午签到进行培训考勤&#xff0c;并形成培训签到表&#xff0c;如果用活动报名工具&#xff0c;一般只能实现单次的签到考勤&#xff0c;如果用培训班系统则操作过于繁琐&#xff0c;不利于…

子查询 封装属性创建Connection连接类 数据库连接池

子查询 在select语句中包含另一个select 语句 -->子查询 子查询的分类 单行单列子查询 在where子句中使用 运算符 ! > < -- 查询工资比公司平均工资高的员工信息 -- 查询与员工’smith‘同职位的员工信息 -- 查询比员工joins入职…

工业制造领域系统:SCADA、PLC、DCS、MES、HMI、ERP等,一文秒懂

工业制造控制系统在工业制造领域起到了关键的作用&#xff0c;帮助企业提高生产效率、降低成本、提高产品质量和安全性。不同的企业根据自身需求和规模&#xff0c;可能会选择使用其中的一种或多种系统。 SCADA系统&#xff08;Supervisory Control and Data Acquisition&…

数据和类型转换

文章目录 数据类型数字类型数字操作NaNJavaScript算术运算符的执行顺序 字符串类型&#xff08;string&#xff09;字符串拼接模板字符串 未定义类型&#xff08;undefined&#xff09;布尔类型&#xff08;boolean&#xff09;null&#xff08;空类型&#xff09; 类型转换显式…

【DL经典回顾】激活函数大汇总(十三)(Sinc SwiGLU附代码和详细公式)

激活函数大汇总&#xff08;十三&#xff09;&#xff08;Sinc & SwiGLU附代码和详细公式&#xff09; 更多激活函数见激活函数大汇总列表 一、引言 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里&#xff0c;激活函数扮演着不可…

ARM 寄存器学习:(一)arm多种模式下得寄存器

一.ARM7种状态以及每种状态的寄存器&#xff1a; ARM 处理器共有 7 种不同的处理器模式&#xff0c;在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式&#xff0c;没有spsr寄存器)状态寄存器&#xff08;cpsr和spsr&…

Unity开发一个FPS游戏之二

在之前的文章中,我介绍了如何开发一个FPS游戏,添加一个第一人称的主角,并设置武器。现在我将继续完善这个游戏,打算添加敌人,实现其智能寻找玩家并进行对抗。完成的效果如下: fps_enemy_demo 下载资源 首先是设计敌人,我们可以在网上找到一些好的免费素材,例如在Unity…

KKView远程控制: todesk内网穿透

Todesk内网穿透&#xff1a;实现远程访问的新途径 在数字化时代&#xff0c;远程访问已成为许多企业和个人的基本需求。Todesk作为一款远程桌面控制软件&#xff0c;其内网穿透功能为用户提供了便捷、安全的远程访问体验。本文将介绍Todesk内网穿透的原理、应用场景及其优势&a…

【C++ 】list 类

1. 标准库中的list类 list 类 的介绍&#xff1a; 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代 2. list与forward_list非常相似&#xff1a;最主要的不同在于forward_list是单链表 3. 与其他的序列式容器相比(a…

爆肝总结,Python接口自动化测试-接口关联实例,一文打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 参数关联&#xf…

Python解释器安装

下载Python解释器 如果您从未安装过Python解释器&#xff0c;那么在编写Python代码前需要安装该解释器。什么是Python解释器呢&#xff1f; “Python解释器”就像是一个能够理解和执行Python编程语言的“翻译官”。你写的Python代码&#xff08;一系列指令&#xff09;需要有一…

Redis:持久化、线程模型、大 key

Redis持久化方式有什么方式&#xff1f; Redis 的读写操作都是在内存中&#xff0c;所以 Redis 性能才会高&#xff0c;但是当 Redis 重启后&#xff0c;内存中的数据就会丢失&#xff0c;那为了保证内存中的数据不会丢失&#xff0c;Redis 实现了数据持久化的机制&#xff0c…

宠物食品药品小程序有哪些功能

现在很多人都喜欢养宠物&#xff0c;这带动了宠物相关产业链&#xff0c;例如宠物医院、宠物清理、宠物食品、宠物玩具、宠物药品等。那么今天就介绍宠物食品药品小程序有哪些功能&#xff0c;以帮助您更好地为宠物行业的客户提供服务。 1. **商品展示**&#xff1a;宠物食品小…

二分查找注意事项

目录 1解题思路:首先二分查找分为左闭右闭和左闭右开两种情况&#xff0c;二种情况在细节处理上有所不同 2左闭右闭情况 3左闭右开 4总结&#xff1a; 1解题思路:首先二分查找分为左闭右闭和左闭右开两种情况&#xff0c;二种情况在细…

算法打卡day13|二叉树篇02|Leetcode 102.二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树

在做题之前说明 Deque和Queue 在Java中&#xff0c;Deque和Queue是两种不同的数据结构接口&#xff0c;它们都继承自Collection接口&#xff1b;Deque是Queue的超集&#xff0c;提供了更多的操作和灵活性&#xff0c;以下它们之间存在一些关键的区别&#xff1a; 操作范围&…

【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug

文章目录 前言 时间阈值断点 信号阈值断点 周期步进 Signal Value Lable Data Inspector 分析和应用 总结 前言 近期在一些研发项目中使用Matlab/Simulink时&#xff0c;遇到了挺多费时费力的事情。所以利用晚上和周末时间&#xff0c;在这些方面深入研究了一下&#x…

GPT实战系列-LangChain的OutPutParser解析器

GPT实战系列-LangChain的OutPutParser解析器 LangChain GPT实战系列-LangChain如何构建基通义千问的多工具链 GPT实战系列-构建多参数的自定义LangChain工具 GPT实战系列-通过Basetool构建自定义LangChain工具方法 GPT实战系列-一种构建LangChain自定义Tool工具的简单方法…

leetcode 3.11

leetcode hot 100 二分查找1.寻找旋转排序数组中的最小值 矩阵1.搜索二维矩阵 II知识点&#xff1a;upper_bound, lower_bound知识点&#xff1a;二分查找 2.搜索二维矩阵 链表1.合并两个有序链表2.两数相加3. 删除链表的倒数第 N 个结点 二分查找 1.寻找旋转排序数组中的最小…