本文将为您介绍如何使用 APICloud 快速集成 COS 功能模块并开发跨平台应用。
视频教程
按照 APICloud 教程创建 App,并在模块库中搜索 cosClient 模块并点击添加。
COS SDK 模块提供两种密钥配置方法:
在 script 标签中实现如下:
function refreshCredentail() { // 通过请求接口获取临时密钥 secretID 、secretKey、token、startDate、expirationDate; // 拼接成如下格式 返回即可; return "secretID=***&secretKey=***&token=***&startDate=***&expirationDate=***";}
在注册服务之前设置永久密钥:
var demo = api.require('cosClient');demo.setupPermanentCredentail({"secretID":secretID,"secretKey":secretKey});
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则注册默认服务 | 否 |
appId | 字符串 | 您的 APPID | 否 |
region | 字符串 | 服务地域名称。这里填入 COS 地域简称,例如 ap-beijing。关于地域的更多介绍,请参见 地域和访问域名 | 否 |
isPrefixURL | 布尔值 | - | 否 |
timeOut | 整型 | 超时时间 | 否 |
serviceName | 字符串 | 服务的基础名称,默认值为:myqcloud.com | 否 |
suffix | 字符串 | 自定义域名: | 否 |
useHttps | 布尔值 | 是否使用 https | 否 |
userAgent | 字符串 | 设置自定义 ua | 否 |
host | 字符串 | 自定义域名,不包含“http://”, 在 Android 端生效 | 否 |
port | 整型 | 自定义端口, 在 Android 端生效 | 否 |
返回参数 无
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则注册默认服务。 | 否 |
appId | 字符串 | 您的 APPID 。 APPID 是您在成功申请腾讯云账户后所得到的账号,由系统自动分配,具有固定性和唯一性,可在 账号信息 中查看。腾讯云账号的 APPID,是与账号 ID 有唯一对应关系的应用 ID | 否 |
region | 字符串 | 服务地域名称。这里填入 COS 地域简称,例如 ap-beijing。关于地域的更多介绍,请参见 地域和访问域名 | 否 |
isPrefixURL | 布尔值 | 默认 YES。用于控制拼接 URL 时桶名称在链接中的位置。 示例: NO 时: YES 时: | 否 |
timeOut | 整型 | 超时时间 | 否 |
serviceName | 字符串 | 服务的基础名称,默认值为:myqcloud.com | 否 |
suffix | 字符串 | 自定义域名: | 否 |
useHttps | 布尔值 | 是否使用 https | 否 |
userAgent | 字符串 | 设置自定义 ua | 否 |
host | 字符串 | 自定义域名,不包含“http://”, 在 Android 端生效 | 否 |
port | 整型 | 自定义端口, 在 Android 端生效 | 否 |
返回参数 无
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
返回参数
{
"result":"success",
"data":{
buckets = [ /// 桶列表
{
createDate = "2021-06-02T07:33:33Z"; /// 创建时间
location = "ap-chengdu"; /// 地域
name = "examplebucket-1250000000"; /// 桶名称
type = ""; ///存储桶类型
}];
owner = {
displayName = 10000000001; /// 持有者的名称
id = "qcs::cam::uin/10000000001:uin/10000000001"; /// 持有者 ID,
};
}
}
注意:
存储桶被删除后,其对应的数据将无法再被访问。
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
region | 字符串 | 桶地域 | 是 |
bucket | 字符串 | 存储桶名称,格式为 BucketName-APPID | 是 |
返回参数
删除成功
{ "result":"success"}
删除失败并返回错误信息
{ "result":"error", "error":{} /// 错误信息}
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
name | 字符串 | 桶名称不包含 APPID | 是 |
appId | 字符串 | 用户 APPID | 是 |
region | 字符串 | 桶地域 | 是 |
accessControlList | 字符串 | 定义 bucket 的 acl 属性。有效值:private,public-read-write,public-read;默认值:private | 否 |
readAccount | 字符串 | 赋予被授权者读权限,id="OwnerUin"; | 否 |
writeAccount | 字符串 | 赋予被授权者写权限。格式: id="OwnerUin"; | 否 |
readWriteAccount | 字符串 | 赋予被授权者读写权限。格式: id="OwnerUin"; | 否 |
enableMAZ | 布尔值 | 是否使用多 AZ,默认否 | 否 |
返回参数
创建成功
{ "result":"success"}
创建失败并返回错误信息
{ "result":"error", "error":{} /// 错误信息}
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
region | 字符串 | 桶地域 | 是 |
bucket | 字符串 | 存储桶名称,格式为 BucketName-APPID | 是 |
prefix | 字符串 | 前缀匹配,用来规定返回的文件前缀地址 | 否 |
delimiter | 字符串 | 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 | 否 |
marker | 字符串 | 默认以 UTF-8二进制顺序列出条目,所有列出条目从 marker 开始 | 否 |
maxKeys | 字符串 | 单次返回的最大条目数量,默认1000 | 否 |
返回参数
获取成功
{ "result":"success", "data":{ "Contents":[ { "ETag":"\"c57b7cd3647561480b355a92dc2e971a\"", // 根据对象内容计算出的 MD5 算法校验值,例如"22ca88419e2ed4721c23807c678adbe4c08a7880",注意前后携带双引号 "Owner":{ "ID":"1250000000", // 对象持有者的完整 ID,格式为qcs::cam::uin/[OwnerUin]:uin/[OwnerUin],例如 qcs::cam::uin/100000000001:uin/100000000001,其中100000000001为 uin "DisplayName":"1250000000" // 对象持有者的名称 }, "StorageClass":"STANDARD", // 存储类型为标准存储 "Key":"02_常用语法.pdf", // 文件名 "LastModified":"2023-01-09T11:15:25.000Z", // 最后修改时间 "Size":816838 // 文件大小 } ], "MaxKeys":1000, "IsTruncated":"False",// 响应请求条目是否被截断,值为 'true' 或者 'false' "CommonPrefixes":[ // 将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix { "Prefix":"1\/" // 单条 Common Prefix 的前缀 } ], "Delimiter":"\/", // 定界符 "Name":"examplebucket-1250000000" // 存储桶的名称,格式为 BucketName-APPID,例如 examplebucket-1250000000}}
获取失败并返回错误信息
{ "result":"error", "error":{} /// 错误信息}
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
region | 字符串 | 桶地域 | 是 |
bucket | 字符串 | 存储桶名称,格式为 BucketName-APPID | 是 |
object | 字符串 | 上传到服务端的文件名 | 是 |
filePath | 字符串 | 本地文件路径 | 是 |
uploadId | 字符串 | 在第一次上传文件时无需设置,再次续传时需要设置 | 否 |
storageClass | 字符串 | 对象的存储级别 | 否 |
trafficLimit | 字符串 | 针对本次上传对象时流量控制的限速值,必须为数字,单位默认为 bit/s。限速值设置范围为819200 - 838860800,即800Kb/s - 800Mb/s,如果超出该范围将返回400错误 | 否 |
enableVerification | 字符串 | 是否在上传完成以后,将 COS 返回的文件 MD5与本地文件算出来的 MD5进行校验。默认开启,如果校验出错,文件仍然会被上传到 COS,不过我们会在本地抛出校验失败的 error | 否 |
返回参数
上传初始化阶段
{ "result":"begin", "data":{ "taskId":taskId, // 当前任务 ID,可用于取消任务。 "uploadId":uploadId // 当前上传 ID,用于续传。 }}
上传阶段
{ "result":"processing", "data":{ "totalBytesSent":totalBytesSent, // 当前传输进度。 "totalBytesExpectedToSend":totalBytesExpectedToSend // 文件总大小。 }}
完成
上传成功
{ "result":"success", "data":{} // 文件信息}
上传失败并返回错误信息
{ "result":"error", "error":{} /// 错误信息}
参数名 | 类型 | 说明 | 是否必传 |
taskId | 字符串 | 从上传接口中获取,由业务保存,用于取消当前任务 | 否 |
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,如果不传,则使用默认服务实例进行网络请求 | 否 |
region | 字符串 | 桶地域 | 是 |
bucket | 字符串 | 存储桶名称,格式为 BucketName-APPID | 是 |
object | 字符串 | 服务端的文件名 | 是 |
versionId | 字符串 | 文件版本号 | 否 |
localPath | 字符串 | 本地文件路径 | 是 |
trafficLimit | 字符串 | 针对本次下载对象时流量控制的限速值,必须为数字,单位默认为 bit/s。限速值设置范围为819200 - 838860800,即800Kb/s - 800Mb/s,如果超出该范围将返回400错误 | 否 |
enableVerification | 字符串 | 是否在下载完成以后,将 COS 返回的文件 MD5与本地文件算出来的 MD5进行校验。默认开启,如果校验出错,会抛出校验失败的 error。 | 否 |
返回参数
下载初始化阶段
{ "result":"begin", "data":{ "taskId":taskId, // 当前任务 ID,可用于取消任务。 }}
下载阶段
{ "result":"processing", "data":{ "totalBytesDownload":totalBytesDownload, // 当前传输进度。 "totalBytesExpectedToDownload":totalBytesExpectedToDownload // 文件总大小。 }}
完成
下载成功
{"result":"success","data":{} // 文件信息}
下载失败并返回错误信息
{"result":"error","error":{} /// 错误信息}
参数名 | 类型 | 说明 | 是否必传 |
taskId | 字符串 | 从下载接口中获取,由业务保存,用于取消当前任务 | 否 |
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
region | 字符串 | 桶地域 | 是 |
bucket | 字符串 | 存储桶名称,格式为 BucketName-APPID | 是 |
object | 字符串 | 服务端的文件名 | 是 |
versionId | 字符串 | 文件版本号 | 否 |
返回参数
获取成功
"result":"success", "data":{} // 文件对象信息}
获取失败并返回错误信息
{ "result":"error", "error":{} /// 错误信息}
注意:
文件被删除后,其对应的数据将无法再被访问。
demo.deleteObject({
"serviceKey":"test",
"region":"ap-chengdu",
"bucket":"examplebucket-1250000000",
"object":"test.jpg"},function(ret,err){
if(err != ""){
alert(err.data);
}else{
alert(ret.result);
}
});
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,不传则使用默认服务实例进行网络请求 | 否 |
region | 字符串 | 桶地域 | 是 |
bucket | 字符串 | 存储桶名称,格式为 BucketName-APPID | 是 |
object | 字符串 | 服务端的文件名 | 是 |
versionId | 字符串 | 文件版本号 | 否 |
返回参数
删除成功
{ "result":"success",}
删除失败并返回错误信息
{ "result":"error", "error":{} /// 错误信息}
demo.cancelAll({
"serviceKey":"test"
},function(ret,err){
if(err != ""){
alert(err.data);
}else{
alert(ret.result);
}
});
请求参数
参数名 | 类型 | 说明 | 是否必传 |
serviceKey | 字符串 | COS 服务实例唯一标识,取消对应服务实例发起的网络请求 | 否 |
返回参数
无