当前位置: 首页 > news >正文

腾讯云对象存储的在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

相关文章:

  • Vue学习日记 Day7 —— json-server工具、基于VueCli自定义创建项目、postcss插件
  • C语言中volatile关键字的用法
  • 华为配置敏捷分布式SFN漫游实验
  • 【Golang】golang使用三方SDK操作容器指南
  • 爬虫(五)
  • 面向对象编程第二式:继承 (Java篇)
  • oppo前端开发一面
  • 24计算机考研调剂 | 重庆工商大学
  • Mysql中的engine
  • C++(3/13)
  • Linux:kubernetes(k8s)Deployment的操作(13)
  • Ubuntu 14.04:安装PaddlePaddle(Conda安装)
  • flask-sqlalchemy库
  • 【课程作业】基于Java的车辆租赁管理平台/租车系统
  • Android动画之属性动画,Android开发面试技巧
  • [PHP内核探索]PHP中的哈希表
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Docker: 容器互访的三种方式
  • go语言学习初探(一)
  • JS基础之数据类型、对象、原型、原型链、继承
  • nodejs实现webservice问题总结
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 关于字符编码你应该知道的事情
  • 将 Measurements 和 Units 应用到物理学
  • 前端_面试
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 推荐一个React的管理后台框架
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一、python与pycharm的安装
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • linux 淘宝开源监控工具tsar
  • ​Python 3 新特性:类型注解
  • !!Dom4j 学习笔记
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 安徽锐锋科技IDMS系统简介
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (javascript)再说document.body.scrollTop的使用问题
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (接口自动化)Python3操作MySQL数据库
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (全注解开发)学习Spring-MVC的第三天
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一) storm的集群安装与配置
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Reactor简单使用教程
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .pyc文件是什么?