详情页标题前

腾讯云对象存储生成预签名链接

详情页1

简介

Node.js SDK 提供获取对象 URL、获取请求预签名 URL 接口,详细操作请查看本文说明和示例。关于使用预签名 URL 上传的说明请参见 预签名授权上传, 使用预签名 URL 下载的说明请参见 预签名授权下载说明建议用户使用临时密钥生成预签名,通过临时授权的方式进一步提高预签名上传、下载等请求的安全性。申请临时密钥时,请遵循 最小权限指引原则,防止泄露目标存储桶或对象之外的资源。申请临时密钥的 action 需添加 "name/cos:GetObject" 权限。如果您一定要使用永久密钥来生成预签名,建议永久密钥的权限范围仅限于上传或下载操作,以规避风险。

计算签名

COS XML API 的请求里,私有资源操作都需要鉴权凭证 Authorization,用于判断当前请求是否合法。鉴权凭证使用方式有两种:1. 放在 header 参数里使用,字段名:authorization。2. 放在 url 参数里使用,字段名:sign。COS.getAuthorization 方法用于计算鉴权凭证(Authorization),用以验证请求合法性的签名信息。注意该方法推荐只在前端调试时使用,项目上线不推荐使用前端计算签名的方法,有暴露密钥的风险。

使用示例

获取文件下载的鉴权凭证:

// SECRETID 和 SECRETKEY 请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理var COS = require('cos-nodejs-sdk-v5');var Authorization = COS.getAuthorization({  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  Method: 'get',  Key: 'a.jpg',  Expires: 60,  Query: {},  Headers: {},});

参数说明

参数名 参数描述 类型 是否必填
SecretId 用户的 SecretId String
SecretKey 用户的 SecretKey String
Method 操作方法,如 get,post,delete, head 等 HTTP 方法 String
Key 对象键(Object 的名称),对象在存储桶中的唯一标识,如果请求操作是对文件的,则为文件名,且为必须参数。如果操作是对于存储桶,则为空 String
Query 签名中要签入的请求参数,{key: ‘val’} 的格式 Object
Headers 签名中要签入的请求头部,{key: ‘val’} 的格式 Object
Expires 签名几秒后失效,默认为 900 秒 Number

返回值说明

返回值是计算得到的鉴权凭证字符串 authorization。

获取请求预签名 URL

下载请求示例

示例一:获取不带签名 Object Url

var url = cos.getObjectUrl({  Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */  Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */  Key: '1.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */  Sign: false,});

示例二:获取带签名 Object Url

var url = cos.getObjectUrl({  Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */  Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */  Key: '头像.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */});

示例三:如果签名过程是异步获取,需要通过 callback 获取带签名 Url

cos.getObjectUrl(  {    Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */    Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */    Key: '头像.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */    Sign: false,  },  function (err, data) {    console.log(err || data.Url);  });

示例四:指定链接有效时间

cos.getObjectUrl(  {    Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */    Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */    Key: '头像.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */    Sign: true,    Expires: 3600, // 单位秒  },  function (err, data) {    console.log(err || data.Url);  });

示例五:获取文件 Url 并下载文件

var request = require('request');var fs = require('fs');cos.getObjectUrl(  {    Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */    Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */    Key: '头像.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */    Sign: true,  },  function (err, data) {    if (err) return console.log(err);    console.log(data.Url);    var req = request(data.Url, function (err, response, body) {      console.log(err || body);    });    var writeStream = fs.createWriteStream(__dirname + '/1.jpg');    req.pipe(writeStream);  });

示例六:生成预签名 URL,并在签名中携带 Query 和 Header

cos.getObjectUrl(  {    Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */    Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */    Key: '头像.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */    Sign: true,    /* 传入的请求参数需与实际请求相同,能够防止用户篡改此 HTTP 请求的参数 */    Query: {      'imageMogr2/thumbnail/200x/': '',    },    /* 传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的 HTTP 请求头部 */    Headers: {      host: 'xxx', /* 指定 host 访问,非指定的 host 访问会报错403 */    },  },  function (err, data) {    console.log(err || data.Url);  });

上传请求示例

示例一:获取预签名 Put Object 上传 Url

var request = require('request');var fs = require('fs');cos.getObjectUrl(  {    Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */    Region: 'COS_REGION', /* 存储桶所在地域,例如 ap-beijing,必须字段 */    Key: '头像.jpg', /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */    Method: 'PUT',    Sign: true,  },  function (err, data) {    if (err) return console.log(err);    console.log(data.Url);    var readStream = fs.createReadStream(__dirname + '/1.jpg');    var req = request(      {        method: 'PUT',        url: data.Url,      },      function (err, response, body) {        console.log(err || body);      }    );    readStream.pipe(req);  });

参数说明

参数名 参数描述 类型 是否必填
Bucket 存储桶的名称,命名规则为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
Region 存储桶所在地域,枚举值请参见 地域和访问域名 String
Key 对象键(Object 的名称),对象在存储桶中的唯一标识,如果请求操作是对文件的,则为文件名,且为必须参数。如果操作是对于存储桶,则为空 String
Sign 是否返回带有签名的 Url,默认为 true Boolean
Protocol 可选填为 http:https:,默认为 http:(带冒号) String
Domain 存储桶访问域名,默认为 {BucketName-APPID}.cos.{Region}.myqcloud.com String
Method 操作方法,如 get,post,delete, head 等 HTTP 方法,默认为 get String
Query 签名中要签入的请求参数,{key: ‘val’} 的格式 Object
Headers 签名中要签入的请求头部,{key: ‘val’} 的格式 Object
Expires 签名几秒后失效,默认为 900 秒 Number

返回值说明

返回值是一个字符串,两种情况:1. 如果签名计算可以同步计算(如:实例化传入了 SecretId 和 SecretKey),则默认返回带签名的 url。2. 否则返回不带签名的 url。

回调函数说明

function(err, data) { ... }
参数名 参数描述 类型
err 请求发生错误时返回的对象,包括网络错误和业务错误,如果请求成功则为空,更多详情请参见 错误码 文档 Object
data 请求成功时返回的对象,如果请求发生错误,则为空 Object
– Url 计算得到的 Url String

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

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

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

相关推荐

  • 腾讯云对象存储DELETE Bucket encryption

    功能描述 DELETE Bucket encryption 接口用于删除指定存储桶下的默认加密配置。要执行此接口,必须拥有 DeleteBucketEncryption 权限。默认情况下,Bucket 的持有者直接拥有权限使用该 API 接口,Bucket 持有者也可以将权限授予其他用户。 请求 请求示例 DELETE /?encryption HTTP 1…

    腾讯云 2023年12月9日
  • 函数计算中,fc上链接数据库比ecs上慢了好多,这个现在有优化吗?-云小二-阿里云

    函数计算中,fc上链接数据库比ecs上慢了好多,这个现在有优化吗? 以下为热心网友提供的参考意见 在函数计算(FC)中,与ECS相比,连接到数据库可能会慢一些。这是因为FC是无服务器计算服务,而ECS是虚拟机实例,它们在网络和性能方面存在一些差异。 然而,AWS一直在努力优化FC的性能和连接速度。他们不断改进FC的网络架构和底层技术,以提高其性能和响应时间。…

    阿里云 2024年1月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯TencentOS ServerTencentOS Server 2.4 (TK4) 更新日志

    说明镜像更新记录以发布时间为顺序。镜像发布按照地域灰度。若创建云服务器时,镜像不是更新记录中的最新版本,则可能是还未发布至该地域。若您在控制台未找到更新记录中的某个镜像,可能是该镜像还未全量开放,详细信息请咨询 腾讯云助手。本文涉及镜像架构均为 X86。 2023年 更新特性 更新日期 更新用户态软件升级内核至 5.4.119-19.0009.37升级 ML…

    腾讯云 2023年12月9日
  • 阿里云负载均衡健康检查FAQ-云淘科技

    文本介绍传统型负载均衡CLB(Classic Load Balancer)健康检查相关的常见问题。 健康检查的原理是什么? 推荐的健康检查配置是什么? 是否可以关闭健康检查? TCP监听如何选择健康检查方式? ECS实例权重设置为零对健康检查有什么影响? HTTP监听向后端ECS实例执行健康检查使用的方法是什么? HTTP监听向后端ECS实例执行健康检查的I…

    阿里云负载均衡 2023年12月10日
  • 腾讯云对象存储设置盲水印

    简介 盲水印是对象存储基于数据万象推出的特殊水印服务,能够将水印图以不可见形式添加至图像频域,在图片被攻击后仍可进行水印图提取,进行鉴权追责,详情请参见 盲水印概述。注意盲水印是付费服务,由数据万象收取,具体费用请参见数据万象的 定价文档。盲水印目前仅适用于中国大陆公有云地域。 操作步骤 1. 登录 对象存储控制台 ,在存储桶列表页面选择需操作的存储桶,进入…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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