详情页标题前

腾讯云对象存储快速入门

详情页1

下载与安装

相关资源

对象存储服务的 XML JS SDK 资源 github 地址:XML Node.js SDKSDK 快速下载地址:XML Node.js SDK演示示例 Demo 下载地址:XML Node.js SDK DemoSDK 文档中的所有示例代码请参见 SDK 代码示例SDK 更新日志请参见 ChangeLog说明如果您在使用 SDK 时遇到函数或方法不存在等错误,请先将 SDK 升级到最新版再重试。

环境依赖

1. 使用 SDK 需要您的运行环境包含 nodejs 以及 npm,其中 nodejs 版本要求 ≥ 6。2. 登录 对象存储控制台 创建存储桶后,获取存储桶名称和 地域名称3. 登录 访问管理控制台 获取您的项目 SecretId 和 SecretKey。说明关于本文中出现的 SecretId、SecretKey、Bucket 等名称的含义和获取方式请参见 COS 术语信息

安装 SDK

通过 npm 安装环境 SDK: npm 地址

npm i cos-nodejs-sdk-v5 --save

开始使用

初始化

注意建议用户 使用临时密钥 调用 SDK,通过临时授权的方式进一步提高 SDK 使用的安全性。申请临时密钥时,请遵循 最小权限指引原则,防止泄露目标存储桶或对象之外的资源。如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。

使用临时密钥初始化(推荐)

临时密钥生成和使用请参见 临时密钥生成及使用指引。Node.js SDK 支持通过传入临时密钥进行初始化,请参考以下示例代码:

const request = require('request');const COS = require('cos-nodejs-sdk-v5');const cos = new COS({    getAuthorization: function (options, callback) {        // 初始化时不会调用,只有调用 cos 方法(例如 cos.putObject)时才会进入        // 异步获取临时密钥        request({            url: 'https://example.com/sts', // 替换为自己的获取临时密钥的服务url            data: {                // 可从 options 取需要的参数            }        }, function (err, response, body) {            let data = null;            let credentials = null;            try {                data = JSON.parse(body);                credentials = data.credentials;            } catch(e) {}            if (!data || !credentials) return console.error('credentials invalid');            callback({                TmpSecretId: credentials.tmpSecretId,        // 临时密钥的 tmpSecretId                TmpSecretKey: credentials.tmpSecretKey,      // 临时密钥的 tmpSecretKey                SecurityToken: credentials.sessionToken, // 临时密钥的 sessionToken                // 建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误                StartTime: data.startTime, // 时间戳,单位秒,如:1580000000                ExpiredTime: data.expiredTime, // 临时密钥失效时间戳,是申请临时密钥时,时间戳加 durationSeconds            });        });    }});

使用永久密钥初始化(不推荐)

使用永久密钥初始化时,请注意保管好密钥,防止泄露。
请先在访问管理控制台中的
API 密钥管理 页面获取 SecretId、SecretKey。
将 SecretId、SecretKey、Bucket 和 Region 修改为您实际开发环境下的值,测试上传文件,请参考以下示例代码:

// SECRETID 和 SECRETKEY 请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理const COS = require('cos-nodejs-sdk-v5');const cos = new COS({    SecretId: process.env.SecretId, // 推荐使用环境变量获取;用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140    SecretKey: process.env.SecretKey, // 推荐使用环境变量获取;用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140});

以下是部分常用接口例子,更详细的初始化方法请参见 demo 示例。

配置项

new COS(options) 构造函数参数说明

参数名 参数描述 类型 是否必填
SecretId 用户的 SecretId String
SecretKey 用户的 SecretKey String
FileParallelLimit 同一个实例下上传的文件并发数,默认值3 Number
ChunkParallelLimit 同一个上传文件的分块并发数,默认值3 Number
ChunkRetryTimes 分块上传及分块复制时,出错重试次数,默认值2(加第一次,请求共3次) Number
ChunkSize 分块上传时,每块的字节数大小,单位为 Byte,默认值1048576(1MB) Number
SliceSize 使用 uploadFiles 批量上传时,文件大小大于该数值将使用按分片上传,否则将调用简单上传,单位 Byte,默认值1048576(1MB) Number
CopyChunkParallelLimit 进行分块复制操作中复制分块上传的并发数,默认值20 Number
CopyChunkSize 使用 sliceCopyFile 分块复制文件时,每片的大小字节数,单位为 Byte,默认值10485760(10MB) Number
CopySliceSize 使用 sliceCopyFile 分片复制文件时,文件大小大于该数值将使用分片复制 ,否则将调用简单复制,单位为 Byte,默认值10485760(10MB) Number
ProgressInterval 上传进度的回调方法 onProgress 的回调频率,单位 ms ,默认值1000 Number
Protocol 发请求时用的协议,可选项 https:http:,默认判断当前页面是 http: 时使用 http:,否则使用 https: String
ServiceDomain 调用 getService 方法时,请求的域名,例如 service.cos.myqcloud.com String
Domain 调用操作存储桶和对象的 API 时自定义请求域名。可以使用模板,例如"{Bucket}.cos.{Region}.myqcloud.com" ,即在调用 API 时会使用参数中传入的 Bucket 和 Region 进行替换 String
UploadQueueSize 上传队列最长大小,超出队列大小并失败/已完成/已取消状态的任务会被清理,默认1000 Number
UploadCheckContentMd5 强制上传文件也校验 Content-MD5,会对文件请求 Body 计算 md5 放在 header 的 Content-MD5 字段里,默认 false Boolean
Timeout 超时时间,单位毫秒,默认为0,即不设置超时时间 Number
KeepAlive 多个请求同用 TCP 连接,默认 true,若请求并发量大建议 打开 Boolean
StrictSsl 严格校验 HTTPS 证书,默认 true Boolean
Proxy 请求时使用 HTTP 代理,例如:http://127.0.0.1:8080 String
getAuthorization 获取签名的回调方法,如果没有 SecretId、SecretKey 时,这个参数必选 Function
UseAccelerate 是否启用全球加速域名,默认为 false。若改为 true,需要存储桶开启全球加速功能,详情请参见 开启全球加速 Boolean

getAuthorization 回调函数说明的函数说明(使用格式一)

getAuthorization: function(options, callback) { ... }

getAuthorization 的函数说明:

参数名 参数描述 类型
options 获取临时密钥需要的参数对象 Object
– Bucket 存储桶的名称,命名规则为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
– Region 存储桶所在地域,枚举值请参见 地域和访问域名 String
callback 临时密钥获取完成后的回传方法 Function

获取完临时密钥后,callback 回传一个对象,回传对象的属性列表如下:

属性名 参数描述 类型 是否必填
TmpSecretId 获取回来的临时密钥的 tmpSecretId String
TmpSecretKey 获取回来的临时密钥的 tmpSecretKey String
SecurityToken 获取回来的临时密钥的 sessionToken,对应 header 的 x-cos-security-token 字段 String
StartTime 密钥获取的开始时间,即获取时刻的时间戳,单位秒,startTime,如:1580000000,用于签名开始时间,传入该参数可避免前端时间偏差签名过期问题 String
ExpiredTime 获取回来的临时密钥的 expiredTime,超时时刻的时间戳,单位秒,如:1580000900 String

getAuthorization 回调函数说明(使用格式二)

getAuthorization: function(options, callback) { ... }

getAuthorization 的函数说明:

参数名 参数描述 类型
options 获取签名需要的参数对象 Object
– Method 当前请求的 Method String
– Pathname 请求路径,用于签名计算 String
– Key 对象键(Object 的名称),对象在存储桶中的唯一标识,了解更多请参见 对象概述 String
– Query 当前请求的 query 参数对象,{key: ‘val’} 的格式 Object
– Headers 当前请求的 header 参数对象,{key: ‘val’} 的格式 Object
callback 临时密钥获取完成后的回调 Function

getAuthorization 计算完成后,callback 回传参数支持两种格式:
格式一:回传鉴权凭证字符串 Authorization。
格式二:回传一个对象,对象属性列表如下:

属性名 参数描述 类型 是否必填
Authorization 计算得到的签名字符串 String
SecurityToken 获取回来的临时密钥的 sessionToken,对应 header 的 x-cos-security-token 字段 String

获取鉴权凭证

实例本身鉴权凭证可以通过实例化时传入的参数控制如何或获取,有三种获取方式:1. 实例化时,传入 SecretId、SecretKey,每次需要签名都由实例内部计算。2. 实例化时,传入 getAuthorization 回调,每次需要签名通过这个回调计算完返回签名给实例。3. 实例化时,传入 getSTS 回调,每次需要临时密钥通过这个回调返回给实例,在每次请求时实例内部使用临时密钥计算得到签名。

使用方式

回调方式

文档里默认使用回调方式,使用代码如下:

// 这里省略初始化过程和上传参数var cos = new COS({ ... });cos.uploadFile({ ... }, function(err, data) {  if (err) {    console.log('上传出错', err);  } else {    console.log('上传成功', data);  }});

Promise

sdk 同样支持 Promise 方式调用,例如上述回调方式的代码等同于以下代码:

// 这里省略初始化过程和上传参数var cos = new COS({ ... });cos.uploadFile({ ... }).then(data => {  console.log('上传成功', data);}).catch(err => {  console.log('上传出错', err);});

同步方式

同步方式基于 JavaScript 的 async 和 await,上述回调方式的代码等同于以下代码:

async function upload() {  // 这里省略初始化过程和上传参数  var cos = new COS({ ... });  try {    var data = await cos.uploadFile({ ... });    return { err: null, data: data }  } catch (err) {    return { err: err, data: null };  }}// 可以同步拿到请求的返回值,这里举例说明,实际返回的数据格式可以自定义var uploadResult = await upload();if (uploadResult.err) {  console.log('上传出错', uploadResult.err);} else {  console.log('上传成功', uploadResult.data);}

注意cos.getObjectUrl 目前只支持回调方式。

使用技巧

通常情况下我们只需要创建一个 COS SDK 实例,然后在需要调用 SDK 方法的地方直接使用这个实例即可,示例代码如下:

var cos = new COS({  ....});
/* 自己封装的上传方法 */function myUpload() { // 不需要在每个方法里创建一个 COS SDK 实例 // var cos = new COS({ // ... // }); cos.putObject({ .... });}
/* 自己封装的删除方法 */function myDelete() { // 不需要在每个方法里创建一个 COS SDK 实例 // var cos = new COS({ // ... // }); cos.deleteObject({ .... });}

常见接口

以下是部分常用接口入口,更详细的初始化方法请参见 demo 示例。

创建存储桶

cos.putBucket({    Bucket: 'examplebucket-1250000000',    Region: 'COS_REGION'}, function(err, data) {    console.log(err || data);});

查询存储桶列表

cos.getService(function (err, data) {    console.log(data && data.Buckets);});

上传对象

该接口适用于小文件上传,大文件请使用分块上传接口,详情请参见 对象操作 文档。

cos.putObject({    Bucket: 'examplebucket-1250000000', /* 必须 */    Region: 'COS_REGION',    /* 必须 */    Key: 'exampleobject',              /* 必须 */    StorageClass: 'STANDARD',    Body: fs.createReadStream('./exampleobject'), // 上传文件对象    onProgress: function(progressData) {        console.log(JSON.stringify(progressData));    }}, function(err, data) {    console.log(err || data);});

查询对象列表

cos.getBucket({    Bucket: 'examplebucket-1250000000', /* 必须 */    Region: 'COS_REGION',     /* 必须 */    Prefix: 'a/',           /* 非必须 */}, function(err, data) {    console.log(err || data.Contents);});

下载对象

cos.getObject({    Bucket: 'examplebucket-1250000000', /* 必须 */    Region: 'COS_REGION',    /* 必须 */    Key: 'exampleobject',              /* 必须 */    Output: fs.createWriteStream('./exampleobject'),}, function(err, data) {    console.log(err || data);});

删除对象

cos.deleteObject({    Bucket: 'examplebucket-1250000000', /* 必须 */    Region: 'COS_REGION',    /* 必须 */    Key: 'exampleobject'       /* 必须 */}, function(err, data) {    console.log(err || data);});



对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:http://www.yunxiaoer.com/145866.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云云函数(SCF)计费相关问题-云淘科技

    在免费额度内为什么产生了计费? 如您在免费额度内产生了扣费,可以在费用中心 > 费用账单 > 账单详情 中查看云函数资源扣费项请核对计费项是否为“响应流量”。SCF 免费额度和资源包不包含 Web 函数响应流量,请参考 免费额度 和 Web 函数计费说明。 2022年6月1日后,只要开通云函数服务就扣基础套餐费用吗? 1.首先判断用户已开通云函数…

    腾讯云 2023年12月9日
  • 腾讯云云点播复杂合成

    简介 复杂合成功能,可以满足高难度的音视频制作场景。使用该功能,在视频轨和音频轨上,以视频、音频、图片作为素材,进行画面旋转、画面叠加、声音混合、音量调节、拼接裁剪、插入转场等复杂操作,生成新的媒体文件。 功能 说明 画面旋转 对视频、图片的画面旋转一定角度,或按照某个方向翻转。 画面叠加 将视频、图片中的画面依序叠加在一起,如实现“画中画”的效果。 画面缩…

    腾讯云 2023年12月9日
  • 腾讯云TDSQL-C MySQL版通过控制台连接集群

    DMC(Database Management Center)是腾讯云的一款数据库管理工具,提供库表级操作、实时监控、实例会话管理、SQL 窗口、数据管理为一体的数据库管理服务。本文为您介绍如何使用 DMC 数据库管理控制台连接 TDSQL-C MySQL 版集群。 前提条件 已创建数据库集群账号,具体方法请参见 创建数据库账号。 操作步骤 在集群列表页面,…

    2023年12月9日
  • 腾讯云对象存储设置防盗链

    简介 为了避免恶意程序使用资源 URL 盗刷公网流量或使用恶意手法盗用资源,给用户带来不必要的损失。腾讯云对象存储支持防盗链配置,建议您通过控制台的防盗链设置配置黑/白名单,来进行安全防护。注意如果您访问对象时带有签名(不论 URL 和 Header),则不进行防盗链验证。配置防盗链时,针对大文件分块请求的场景,您可以把自身域名添加到防盗链白名单中。 操作步…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云直播DRM 加密配置

    云直播提供基于 Widevine、Fairplay、NormalAES 的 DRM 加密协议的视频直播加密、防录制、防盗链等服务,全方位保障用户视频 内容安全。本文主要介绍了通过控制台使用 DRM 加密功能的操作步骤。 注意事项 腾讯云只提供对视频流的加密操作,DRM 加密的证书管理由第三方服务商华曦达(SDMC)和DRMtoday提供,使用 DRM 加密的…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。