Skip to content

Commit

Permalink
update csp doc
Browse files Browse the repository at this point in the history
  • Loading branch information
carsonxu committed Oct 29, 2018
1 parent eca8124 commit 3f8dccd
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 301 deletions.
2 changes: 1 addition & 1 deletion csp/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# COS JavaScript SDK 私有化使用文档
# COS JavaScript SDK CSP 使用文档

[快速入门](./start.md)

Expand Down
112 changes: 48 additions & 64 deletions csp/api.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# COS JavaScript SDK CSP 接口说明

> 本文针对 JavaScript SDK 的接口做详细的介绍说明
JavaScript SDK github 地址:[tencentyun/cos-js-sdk-v5](https://github.com/tencentyun/cos-js-sdk-v5)
Expand Down Expand Up @@ -547,7 +549,7 @@ cos.putBucketAcl({
cos.putBucketAcl({
Bucket: 'test-1250000000', /* 必须 */
Region: 'ap-guangzhou', /* 必须 */
GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"' // 1001 是 uin
GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"' // 1001 是 uin(帐号ID)
}, function(err, data) {
console.log(err || data);
});
Expand All @@ -558,7 +560,7 @@ cos.putBucketAcl({
cos.putBucketAcl({
Bucket: 'test-1250000000', /* 必须 */
Region: 'ap-guangzhou', /* 必须 */
GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"' // 1001 是 uin
GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"' // 1001 是 uin(帐号ID)
}, function(err, data) {
console.log(err || data);
});
Expand Down Expand Up @@ -599,11 +601,11 @@ cos.putBucketAcl({
| GrantFullControl | 赋予被授权者读写权限。格式:id=" ",id=" ";<br>当需要给子账户授权时,id="qcs::cam::uin/&lt;OwnerUin>:uin/&lt;SubUin>",<br>当需要给根账户授权时,id="qcs::cam::uin/&lt;OwnerUin>:uin/&lt;OwnerUin>",<br>例如:'id="qcs::cam::uin/123:uin/123", id="qcs::cam::uin/123:uin/456"' | String ||
| AccessControlPolicy | 说明跨域资源共享配置的所有信息列表 | Object ||
| - Owner | 代表存储桶所有者的对象 | Object ||
| - - ID | 代表用户 ID 的字符串,格式如 qcs::cam::uin/1001:uin/1001,1001 是 uin | Object ||
| - - ID | 代表用户 ID 的字符串,格式如 qcs::cam::uin/1001:uin/1001,1001 是 uin(帐号ID) | Object ||
| - Grants | 说明跨域资源共享配置的所有信息列表 | Object ||
| - - Permission | 说明跨域资源共享配置的所有信息列表,可选项 READ、WRITE、READ_ACP、WRITE_ACP、FULL_CONTROL | String ||
| - - Grantee | 说明跨域资源共享配置的所有信息列表 | ObjectArray ||
| - - - ID | 代表用户 ID 的字符串,格式如 qcs::cam::uin/1001:uin/1001,1001 是 uin | String ||
| - - - ID | 代表用户 ID 的字符串,格式如 qcs::cam::uin/1001:uin/1001,1001 是 uin(帐号ID) | String ||
| - - - DisplayName | 代表用户名称的字符串,一般填写成和 ID 一致的字符串 | String ||

#### 回调函数说明
Expand Down Expand Up @@ -783,6 +785,47 @@ function(err, data) { ... }
| - headers | 请求返回的头部信息 | Object |


### Get Bucket Location

[Get Bucket Location 接口说明](https://cloud.tencent.com/document/product/436/8275)

Get Bucket Location 接口用于获取 Bucket 所在的地域信息,该 GET 操作使用 location 子资源返回 Bucket 所在的区域,只有 Bucket 持有者才有该 API 接口的操作权限。

#### 使用示例

```js
cos.getBucketLocation({
Bucket: 'test-1250000000', /* 必须 */
Region: 'ap-guangzhou', /* 必须 */
}, function(err, data) {
console.log(err || data);
});
```

#### 参数说明

| 参数名 | 参数描述 | 类型 | 必填 |
|--------|----------|------|------|
| Bucket | Bucket 的名称。命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式 | String ||
| Region | Bucket 所在区域。枚举值请见:[Bucket 地域信息](https://cloud.tencent.com/document/product/436/6224) | String ||

#### 回调函数说明

```js
function(err, data) { ... }
```

| 参数名 | 参数描述 | 类型 |
|--------|----------|------|
| err | 请求发生错误时返回的对象,包括网络错误和业务错误。如果请求成功,则为空,[错误码文档](https://cloud.tencent.com/document/product/436/7730) | Object |
| - statusCode | 请求返回的 HTTP 状态码,如 200、403、404 等 | Number |
| - headers | 请求返回的头部信息 | Object |
| data | 请求成功时返回的对象,如果请求发生错误,则为空 | Object |
| - statusCode | 请求返回的 HTTP 状态码,如 200、403、404 等 | Number |
| - headers | 请求返回的头部信息 | Object |
| - LocationConstraint |Bucket 所在区域。枚举值请见:[Bucket 地域信息](https://cloud.tencent.com/document/product/436/6224) | String |


### Get Bucket Lifecycle

[Get Bucket Lifecycle 接口说明](https://cloud.tencent.com/document/product/436/8278)
Expand Down Expand Up @@ -1554,7 +1597,7 @@ cos.putObjectAcl({
Bucket: 'test-1250000000', /* 必须 */
Region: 'ap-guangzhou', /* 必须 */
Key: '1.jpg', /* 必须 */
GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"' // 1001 是 uin
GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"' // 1001 是 uin(帐号ID)
}, function(err, data) {
console.log(err || data);
});
Expand Down Expand Up @@ -2200,62 +2243,3 @@ cos.restartTask(taskId);
| 参数名 | 参数描述 | 类型 | 必填 |
|--------|----------|------|------|
| taskId | 文件上传任务的编号,在调用 sliceUploadFile 方法时,其 TaskReady 回调会返回该上传任务的 taskId | String ||


### Slice Copy File

Slice Copy File 可用于实现通过分块复制将一个文件从源路径复制到目标路径。在拷贝的过程中,文件元属性和 ACL 可以被修改。用户可以通过该接口实现文件移动,文件重命名,修改文件属性和创建副本。

#### 操作方法原型

调用 Slice Copy File 操作:

```js
cos.sliceCopyFile({
Bucket: 'test-1250000000', /* 必须 */
Region: 'ap-guangzhou', /* 必须 */
Key: '1.zip', /* 必须 */
CopySource: 'test1.cos.ap-guangzhou.myqcloud.com/2.zip', /* 必须 */
onProgress:function (progressData) { /* 非必须 */
console.log(JSON.stringify(progressData));
}
},function (err,data) {
console.log(err || data);
});

```

#### 操作参数说明

| 参数名 | 参数描述 | 类型 | 必填 |
|--------|---------|--------|--------|
| Bucket | Bucket 的名称。命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式 | String ||
| Region | Bucket 所在区域。枚举值请见:[Bucket 地域信息](https://cloud.tencent.com/document/product/436/6224) | String ||
| Key | 对象键(Object 的名称),对象在存储桶中的唯一标识,[对象键说明](https://cloud.tencent.com/document/product/436/13324) | String ||
| CopySource | 源文件 URL 路径 | String ||
| ChunkSize | 分片复制时,每片的大小字节数,默认值 1048576 (1MB) | Number ||
| SliceSize | 使用分片复制的文件大小,默认值 5G | Number ||
| onProgress | 上传文件的进度回调函数,回调参数为进度对象 progressData | Function ||
| - progressData.loaded | 已经上传的文件部分大小,以字节(bytes)为单位 | Number ||
| - progressData.total | 整个文件的大小,以字节(bytes)为单位 | Number ||
| - progressData.speed | 文件的上传速度,以字节/秒(bytes/s)为单位 | Number ||
| - progressData.percent | 文件的上传百分比,以小数形式呈现,例如:下载 50% 即为 0.5 | Number ||

#### 回调函数说明

```js
function(err, data) { ... }
```

| 参数名 | 参数描述 | 类型 |
|--------|---------|--------|
| err | 请求发生错误时返回的对象,包括网络错误和业务错误。如果请求成功,则为空,错误码文档 | Object |
| - statusCode | 请求返回的 HTTP 状态码,如 200、403、404 等 | Number |
| - headers | 请求返回的头部信息 | Object |
| data | 请求成功时返回的对象,如果请求发生错误,则为空 | Object |
| - statusCode | 请求返回的 HTTP 状态码,如 200、403、404 等 | Number |
| - headers | 请求返回的头部信息 | Object |
| - Location | 创建的 Object 的外网访问域名 | String |
| - Bucket | 分块上传的目标 Bucket | String |
| - Key | 对象键(Object 的名称),对象在存储桶中的唯一标识,[对象键说明](https://cloud.tencent.com/document/product/436/13324) | String |
| - ETag | 合并后文件的 MD5 算法校验值,如 "22ca88419e2ed4721c23807c678adbe4c08a7880",注意前后携带双引号 | String |
22 changes: 15 additions & 7 deletions csp/auth.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ function getAuthorization($method, $pathname, $query, $headers)
{

// 获取个人 API 密钥 https://console.qcloud.com/capi
$SecretId = 'xxx';
$SecretKey = 'xxx';
$SecretId = 'AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$SecretKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// 整理参数
!$query && ($query = array());
Expand Down Expand Up @@ -133,11 +133,19 @@ function obj2str($obj)


// 获取前端过来的参数
$params = json_decode(file_get_contents("php://input"), 1);
$pathname = isset($params['pathname']) ? $params['pathname'] : '/';
$method = isset($params['method']) ? $params['method'] : 'get';
$query = isset($params['query']) ? $params['query'] : array();
$headers = isset($params['headers']) ? $params['headers'] : array();
$inputBody = file_get_contents("php://input");
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $inputBody){
$params = json_decode($inputBody, 1);
$pathname = isset($params['pathname']) ? $params['pathname'] : '/';
$method = isset($params['method']) ? $params['method'] : 'get';
$query = isset($params['query']) ? $params['query'] : array();
$headers = isset($params['headers']) ? $params['headers'] : array();
} else {
$pathname = isset($_GET['pathname']) ? $_GET['pathname'] : '/';
$method = isset($_GET['method']) ? $_GET['method'] : 'get';
$query = isset($_GET['query']) && $_GET['query'] ? json_decode($_GET['query'], 1) : array();
$headers = isset($_GET['headers']) && $_GET['headers'] ? json_decode($_GET['headers'], 1) : array();
}

// 返回数据给前端
header('Content-Type: text/plain');
Expand Down
86 changes: 20 additions & 66 deletions csp/csp.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,11 @@ <h1>cos-js-sdk-v5</h1>
ForcePathStyle: true, // 后缀式
// Domain: 'http://{Bucket}.cos.{Region}.example.com', // 前缀式
getAuthorization: function (options, callback) {
var url = './sts.php';
var url = './auth.php?method=' + options.Method + '&pathname=' + encodeURIComponent(options.Key);
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onload = function (e) {
try {
var data = JSON.parse(e.target.responseText);
} catch (e) {
}
callback({
TmpSecretId: data.credentials && data.credentials.tmpSecretId,
TmpSecretKey: data.credentials && data.credentials.tmpSecretKey,
XCosSecurityToken: data.credentials && data.credentials.sessionToken,
ExpiredTime: data.expiredTime,
});
callback(e.target.responseText);
};
xhr.send();
},
Expand Down Expand Up @@ -155,27 +146,27 @@ <h1>cos-js-sdk-v5</h1>
ACL: 'private',
// AccessControlPolicy: {
// "Owner": { // AccessControlPolicy 里必须有 owner
// "ID": 'qcs::cam::uin/459000000:uin/459000000' // 459000000 是 Bucket 所属用户的 QQ 号
// "ID": 'qcs::cam::uin/459000000:uin/459000000' // 459000000 是 Bucket 所属用户的 uin(帐号ID)
// },
// "Grants": [{
// "Grantee": {
// "ID": "qcs::cam::uin/1001:uin/1001", // 10002 是 QQ 号
// "DisplayName": "qcs::cam::uin/1001:uin/1001" // 10002 是 QQ 号
// "ID": "qcs::cam::uin/1001:uin/1001", // 10002 是 uin(帐号ID)
// "DisplayName": "qcs::cam::uin/1001:uin/1001" // 10002 是 uin(帐号ID)
// },
// "Permission": "READ"
// }, {
// "Grantee": {
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 QQ 号
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 uin(帐号ID)
// },
// "Permission": "WRITE"
// }, {
// "Grantee": {
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 QQ 号
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 uin(帐号ID)
// },
// "Permission": "READ_ACP"
// }, {
// "Grantee": {
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 QQ 号
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 uin(帐号ID)
// },
// "Permission": "WRITE_ACP"
// }]
Expand Down Expand Up @@ -230,6 +221,15 @@ <h1>cos-js-sdk-v5</h1>
});
}

function getBucketLocation() {
cos.getBucketLocation({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region
}, function (err, data) {
logger.log(err || data);
});
}

function putBucketLifecycle() {
cos.putBucketLifecycle({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Expand Down Expand Up @@ -384,11 +384,11 @@ <h1>cos-js-sdk-v5</h1>
ACL: 'default', // 继承上一级目录权限
// AccessControlPolicy: {
// "Owner": { // AccessControlPolicy 里必须有 owner
// "ID": 'qcs::cam::uin/459000000:uin/459000000' // 459000000 是 Bucket 所属用户的 QQ 号
// "ID": 'qcs::cam::uin/459000000:uin/459000000' // 459000000 是 Bucket 所属用户的 uin(帐号ID)
// },
// "Grants": [{
// "Grantee": {
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 QQ 号
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 uin(帐号ID)
// },
// "Permission": "READ"
// }]
Expand Down Expand Up @@ -431,22 +431,6 @@ <h1>cos-js-sdk-v5</h1>
});
}

function restoreObject() {
cos.restoreObject({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '1.txt',
RestoreRequest: {
Days: 1,
CASJobParameters: {
Tier: 'Expedited'
}
}
}, function (err, data) {
logger.log(err || data);
});
}

function abortUploadTask() {
cos.abortUploadTask({
Bucket: config.Bucket, /* 必须 */ // Bucket 格式:test-1250000000
Expand Down Expand Up @@ -608,34 +592,6 @@ <h1>cos-js-sdk-v5</h1>

}

function sliceCopyFile() {
// 创建测试文件
var sourceName = '3mb.zip';
var Key = '3mb.copy.zip';

var sourcePath = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/'+ encodeURIComponent(sourceName).replace(/%2F/g, '/');

cos.sliceCopyFile({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: Key,
CopySource: sourcePath,
SliceSize: 2 * 1024 * 1024, // 大于2M的文件用分片复制,小于则用单片复制
onProgress:function (info) {
var percent = parseInt(info.percent * 10000) / 100;
var speed = parseInt(info.speed / 1024 / 1024 * 100) / 100;
logger.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
}
},function (err,data) {
if(err){
logger.log(err);
}else{
logger.log(data);
}
});

}

var time0 = Date.now();
var preMsg = '页面加载完成';
var showTime = function (msg) {
Expand Down Expand Up @@ -694,10 +650,10 @@ <h1>cos-js-sdk-v5</h1>
'putBucketCors',
'getBucketCors',
// 'deleteBucketCors', // 不提供
'getBucketLocation',
'getBucketLifecycle',
'putBucketLifecycle',
'deleteBucketLifecycle',
'deleteBucketLifecycle',
'putBucketReplication',
'getBucketReplication',
'deleteBucketReplication',
Expand All @@ -710,15 +666,13 @@ <h1>cos-js-sdk-v5</h1>
'getObjectAcl',
'deleteObject',
'deleteMultipleObject',
'restoreObject',
'abortUploadTask',
'sliceUploadFile',
'selectFileToUpload',
'cancelTask',
'pauseTask',
'restartTask',
'uploadFiles',
'sliceCopyFile',
'selectUploadFiles',
'startSelectUploadFiles',
];
Expand Down
9 changes: 2 additions & 7 deletions csp/start.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# CSP 使用 COS JavaScript SDK
# COS JavaScript SDK CSP 快速入门

### SDK 获取

Expand Down Expand Up @@ -75,9 +75,4 @@ document.getElementById('file-selector').onchange = function () {
支持 webpack 打包的场景,可以用 npm 引入作为模块
```shell
npm i cos-js-sdk-v5 --save
```

## 其他文档和例子

1. 更多例子请参阅 [XML JavaScript SDK Demo](https://github.com/tencentyun/cos-js-sdk-v5/blob/master/demo)
2. 完整接口文档请参阅 [XML JavaScript SDK 接口文档](https://cloud.tencent.com/document/product/436/12260)
```
Loading

0 comments on commit 3f8dccd

Please sign in to comment.