石家庄门户网站建设,免费简历模板的网站,动漫设计专业就业方向,小说网站排名前十腾讯云对象存储的在Java使用步骤介绍
创建一个腾讯云的账户
这个自己去创建#xff0c;然后开通对象存储服务#xff0c;如下 有了账号就要创建一个对象存储的桶#xff0c;也就是存储对象的一个容器
如果你想只有自己放存放的就设置 私有读写 #xff0c;如果想用网络直…腾讯云对象存储的在Java使用步骤介绍
创建一个腾讯云的账户
这个自己去创建然后开通对象存储服务如下 有了账号就要创建一个对象存储的桶也就是存储对象的一个容器
如果你想只有自己放存放的就设置 私有读写 如果想用网络直接访问那就是 公有读私有写虽然后期可以改但是还是这里直接设置读写权限不然后期改很麻烦还要设置啥消息模板真离谱我想设置然后还要开通业务服了 写了名称访问权限就可以下一步了
当然要点击同意他的条款 上面这里我都是默认的只点击了免费的版本控制。
下一步就直接可以创建了就是展示一下你的选配而且
后买就是如何使用啦
下面是 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) {TreeMapString, Object config new TreeMapString, 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