腾讯云对象存储COS简介和如何接入

一、腾讯云对象存储介绍

腾讯云对象存储(Tencent Cloud Object Storage,COS)是一种安全、可靠、低成本、高扩展的云端存储服务。COS能够存储各种非结构化数据,包括图片、视频、音频、文本等。COS支持标准的HTTP/HTTPS协议,可以通过API、SDK、控制台等方式进行数据的上传、下载和管理。COS还提供了数据保护、数据备份、数据恢复、数据传输加密等多项安全措施,确保用户数据的安全性和可靠性。COS还支持自动化、智能化的数据生命周期管理,帮助用户降低数据存储成本。COS是云计算领域中存储服务的重要组成部分,广泛应用于云存储、备份、归档、内容分发等场景。

二、腾讯云对象存储使用

1.1、开通“对象存储COS”服务

(1)点击申请腾讯云账号:腾讯云账号注册

(2)实名认证

(3)开通“对象存储COS”服务

(4)进入管理控制台

1.2、创建Bucket

进入管理控制台,找到存储桶列表, 创建存储桶

输入桶名称,选择:公有读取,其他默认

点击 桶名称,进入详情页,可测试上传文件

1.3、创建API秘钥

进入API秘钥管理

新建秘钥

三、代码对接腾讯云COS(以Java为例)

3.1,创建桶

String bucket = "examplebucket-1250000000"; //存储桶名称,格式:BucketName-APPID CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket); // 设置 bucket 的权限为 Private(私有读写), 其他可选有公有读私有写, 公有读写 createBucketRequest.setCannedAcl(CannedAccessControlList.Private); Bucket bucketResult = cosClient.createBucket(createBucketRequest)

3.2,获取桶对象列表

// Bucket的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 String bucketName = "examplebucket-1250000000"; ListObjectsRequest listObjectsRequest = new ListObjectsRequest(); // 设置bucket名称 listObjectsRequest.setBucketName(bucketName); // prefix表示列出的object的key以prefix开始 listObjectsRequest.setPrefix("images/"); // deliter表示分隔符, 设置为/表示列出当前目录下的object, 设置为空表示列出所有的object listObjectsRequest.setDelimiter("/"); // 设置最大遍历出多少个对象, 一次listobject最大支持1000 listObjectsRequest.setMaxKeys(1000); ObjectListing objectListing = null; do { try { objectListing = cosClient.listObjects(listObjectsRequest); } catch (CosServiceException e) { e.printStackTrace(); return; } catch (CosClientException e) { e.printStackTrace(); return; } // common prefix表示表示被delimiter截断的路径, 如delimter设置为/, common prefix则表示所有子目录的路径 List<String> commonPrefixs = objectListing.getCommonPrefixes(); // object summary表示所有列出的object列表 List<COSObjectSummary> cosObjectSummaries = objectListing.getObjectSummaries(); for (COSObjectSummary cosObjectSummary : cosObjectSummaries) { // 文件的路径key String key = cosObjectSummary.getKey(); // 文件的etag String etag = cosObjectSummary.getETag(); // 文件的长度 long fileSize = cosObjectSummary.getSize(); // 文件的存储类型 String storageClasses = cosObjectSummary.getStorageClass(); } String nextMarker = objectListing.getNextMarker(); listObjectsRequest.setMarker(nextMarker); } while (objectListing.isTruncated());

3.3,从桶中下载对象

// Bucket的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 String bucketName = "examplebucket-1250000000"; String key = "exampleobject"; // 方法1 获取下载输入流 GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key); // 限流使用的单位是 bit/s, 这里设置下载带宽限制为10MB/s getObjectRequest.setTrafficLimit(80*1024*1024); COSObject cosObject = cosClient.getObject(getObjectRequest); COSObjectInputStream cosObjectInput = cosObject.getObjectContent(); // 下载对象的 CRC64 String crc64Ecma = cosObject.getObjectMetadata().getCrc64Ecma(); // 关闭输入流 cosObjectInput.close(); // 方法2 下载文件到本地 String outputFilePath = "exampleobject"; File downFile = new File(outputFilePath); getObjectRequest = new GetObjectRequest(bucketName, key); ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);

3.4,上传文件到桶中

// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档 TransferConfig transferConfig = new TransferConfig.Builder().build(); // 初始化 TransferManager TransferManager transferManager = new TransferManager(cosXmlService, transferConfig); // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket String bucket = "examplebucket-1250000000"; String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键 String srcPath = new File(context.getCacheDir(), "exampleobject") .toString(); //本地文件的绝对路径 //若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null String uploadId = null; // 上传文件 COSXMLUploadTask cosxmlUploadTask = transferManager.upload(bucket, cosPath, srcPath, uploadId); //设置初始化分块上传回调(5.9.7版本以及后续版本支持) cosxmlUploadTask.setInitMultipleUploadListener(new InitMultipleUploadListener() { @Override public void onSuccess(InitiateMultipartUpload initiateMultipartUpload) { //用于下次续传上传的 uploadId String uploadId = initiateMultipartUpload.uploadId; } }); //设置上传进度回调 cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() { @Override public void onProgress(long complete, long target) { // todo Do something to update progress... } }); //设置返回结果回调 cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() { @Override public void onSuccess(CosXmlRequest request, CosXmlResult result) { COSXMLUploadTask.COSXMLUploadTaskResult uploadResult = (COSXMLUploadTask.COSXMLUploadTaskResult) result; } // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即: // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException? @Override public void onFail(CosXmlRequest request, @Nullable CosXmlClientException clientException, @Nullable CosXmlServiceException serviceException) { if (clientException != null) { clientException.printStackTrace(); } else { serviceException.printStackTrace(); } } }); //设置任务状态回调, 可以查看任务过程 cosxmlUploadTask.setTransferStateListener(new TransferStateListener() { @Override public void onStateChanged(TransferState state) { // todo notify transfer state } });

3.5,从桶中删除文件

// bucket的命名规则为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 String bucketName = "examplebucket-1250000000"; cosClient.deleteBucket(bucketName);
  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用腾讯云存储桶下载文件,你可以使用腾讯云提供的 Java SDK。以下是一个简单的示例代码: ```java import com.qcloud.cos.COSClient; import com.qcloud.cos.model.GetObjectRequest; import com.qcloud.cos.model.ObjectMetadata; import com.qcloud.cos.model.ResponseHeaderOverrides; import com.qcloud.cos.model.S3Object; import com.qcloud.cos.transfer.TransferManager; import com.qcloud.cos.transfer.TransferManagerConfiguration; import com.qcloud.cos.transfer.Upload; import com.qcloud.cos.transfer.UploadResult; import com.qcloud.cos.utils.IOUtils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TencentCloudStorageExample { private static final String SECRET_ID = "your_secret_id"; private static final String SECRET_KEY = "your_secret_key"; private static final String REGION = "your_region"; private static final String BUCKET_NAME = "your_bucket_name"; private static final String KEY = "your_file_key"; private static final String DOWNLOAD_FILE_PATH = "your_local_file_path"; public static void main(String[] args) throws Exception { COSClient cosClient = new COSClient(SECRET_ID, SECRET_KEY); S3Object s3Object = cosClient.getObject(new GetObjectRequest(BUCKET_NAME, KEY)); InputStream inputStream = s3Object.getObjectContent(); FileOutputStream outputStream = new FileOutputStream(new File(DOWNLOAD_FILE_PATH)); IOUtils.copy(inputStream, outputStream); inputStream.close(); outputStream.close(); cosClient.shutdown(); } } ``` 在这个示例中,我们首先创建了一个 `COSClient` 对象,然后使用 `cosClient.getObject` 方法获取文件的输入流,然后将输入流复制到本地文件中。最后,我们关闭 COSClient 对象来释放资源。 请注意,此示例中使用的密钥和存储桶名称是虚拟的,请替换为你自己的密钥和存储桶名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值