Skip to content

Commit 7a0ed53

Browse files
authored
Merge pull request #118 from livehigh/feat/2.11.0
Feat/2.11.0
2 parents ae74133 + 03f3e45 commit 7a0ed53

File tree

6 files changed

+335
-69
lines changed

6 files changed

+335
-69
lines changed

demo/demo.js

Lines changed: 104 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,6 +1518,47 @@ function downloadFile() {
15181518
// cos.emit('inner-kill-task', {TaskId: '123'});
15191519
}
15201520

1521+
// 追加上传
1522+
function appendObject() {
1523+
cos.appendObject({
1524+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1525+
Region: config.Region,
1526+
Key: 'append1.txt', /* 必须 */
1527+
Body: '12345',
1528+
Position: 0,
1529+
},
1530+
function(err, data) {
1531+
console.log(err || data);
1532+
})
1533+
}
1534+
1535+
// 继续追加上传
1536+
function appendObject_continue() {
1537+
cos.headObject({
1538+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1539+
Region: config.Region,
1540+
Key: 'append1.txt', /* 必须 */
1541+
}, function(err, data) {
1542+
if (err) return console.log(err);
1543+
// 首先取到要追加的文件当前长度,即需要上送的Position
1544+
var position = data.headers['content-length'];
1545+
cos.appendObject({
1546+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1547+
Region: config.Region,
1548+
Key: 'append1.txt', /* 必须 */
1549+
Body: '66666',
1550+
Position: position,
1551+
},
1552+
function(err, data) {
1553+
// 也可以取到下一次上传的position继续追加上传
1554+
var nextPosition = data.headers['x-cos-next-append-position'];
1555+
console.log(err || data);
1556+
})
1557+
});
1558+
}
1559+
1560+
1561+
15211562
function request() {
15221563
// 对云上数据进行图片处理
15231564
var filename = 'example_photo.png';
@@ -1646,36 +1687,71 @@ function CIExample4(){
16461687
* 查询已经开通数据万象功能的存储桶
16471688
*/
16481689
function DescribeCIBuckets() {
1649-
let url = 'https://' +config.Bucket + '.pic.' + config.Region + '.myqcloud.com';
1690+
var host = 'ci.' + config.Region + '.myqcloud.com';
1691+
var url = 'https://' + host + '/mediabucket';
16501692
cos.request({
1651-
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1693+
Bucket: config.Bucket,
16521694
Region: config.Region,
16531695
Method: 'GET',
1654-
Url: url
1655-
}, function (err, data) {
1696+
Key: 'mediabucket', /** 固定值,必须 */
1697+
Url: url,
1698+
Query: {
1699+
pageNumber: '1', /** 第几页,非必须 */
1700+
pageSize: '10', /** 每页个数,非必须 */
1701+
// regions: 'ap-chengdu', /** 地域信息,例如'ap-beijing',支持多个值用逗号分隔如'ap-shanghai,ap-beijing',非必须 */
1702+
// bucketNames: 'test-1250000000', /** 存储桶名称,精确搜索,例如'test-1250000000',支持多个值用逗号分隔如'test1-1250000000,test2-1250000000',非必须 */
1703+
// bucketName: 'test', /** 存储桶名称前缀,前缀搜索,例如'test',支持多个值用逗号分隔如'test1,test2',非必须 */
1704+
}
1705+
},
1706+
function(err, data){
1707+
// var CIStatus = data.CIStatus;
16561708
console.log(err || data);
16571709
});
16581710
}
16591711

16601712

16611713
/**
1662-
* 查询已经开通文档预览功能的存储桶
1714+
* 获取媒体文件信息
1715+
*/
1716+
function GetMediaInfo() {
1717+
cos.request({
1718+
Bucket: config.Bucket,
1719+
Region: config.Region,
1720+
Method: 'GET',
1721+
Key: 'test.mp4',
1722+
Query: {
1723+
'ci-process': 'videoinfo' /** 固定值,必须 */
1724+
}
1725+
},
1726+
function (err, data) {
1727+
console.log(err || data);
1728+
});
1729+
}
1730+
1731+
/**
1732+
* 获取媒体文件某个时间的截图
16631733
*/
1664-
function DescribeDocProcessBuckets() {
1665-
let url = 'https://' + 'ci.' + config.Region + '.myqcloud.com/docbucket';
1734+
function GetSnapshot() {
16661735
cos.request({
1667-
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1736+
Bucket: config.Bucket,
16681737
Region: config.Region,
16691738
Method: 'GET',
1670-
Key: 'docbucket',
1671-
Url: url,
1739+
Key: 'test.mp4',
16721740
Query: {
1673-
pageNumber: '1',
1674-
pageSize: '10'
1675-
}
1676-
}, function (err, data) {
1677-
console.log(err || data);
1678-
});
1741+
'ci-process': 'snapshot', /** 固定值,必须 */
1742+
time: 1, /** 截图的时间点,单位为秒,必须 */
1743+
// width: 0, /** 截图的宽,非必须 */
1744+
// height: 0, /** 截图的高,非必须 */
1745+
// format: 'jpg', /** 截图的格式,支持 jpg 和 png,默认 jpg,非必须 */
1746+
// rotate: 'auto', /** 图片旋转方式,默认为'auto',非必须 */
1747+
// mode: 'exactframe', /** 截帧方式,默认为'exactframe',非必须 */
1748+
},
1749+
RawBody: true,
1750+
},
1751+
function (err, data) {
1752+
// var Body = data.Body;
1753+
console.log(err || data);
1754+
});
16791755
}
16801756

16811757

@@ -2142,44 +2218,6 @@ function DescribeMediaJobs() {
21422218
}
21432219

21442220

2145-
/**
2146-
* 获取媒体文件某个时间的截图
2147-
*/
2148-
function GetSnapshot() {
2149-
cos.request({
2150-
Bucket: config.Bucket, // Bucket 格式:test-1250000000
2151-
Region: config.Region,
2152-
Method: 'GET',
2153-
Key: 'test.mp4',
2154-
Query: {
2155-
'ci-process': 'snapshot',
2156-
'time': '1',
2157-
'format': 'png'
2158-
}
2159-
}, function (err, data) {
2160-
console.log(err || data);
2161-
});
2162-
}
2163-
2164-
2165-
/**
2166-
* 获取媒体文件信息
2167-
*/
2168-
function GetMediaInfo() {
2169-
cos.request({
2170-
Bucket: config.Bucket, // Bucket 格式:test-1250000000
2171-
Region: config.Region,
2172-
Method: 'GET',
2173-
Key: 'test.mp4',
2174-
Query: {
2175-
'ci-process': 'videoinfo'
2176-
}
2177-
}, function (err, data) {
2178-
console.log(err || data);
2179-
});
2180-
}
2181-
2182-
21832221
/**
21842222
* 创建工作流
21852223
*/
@@ -2587,7 +2625,7 @@ function GetPrivateM3U8() {
25872625
});
25882626
}
25892627

2590-
2628+
// 存储桶操作
25912629
// getService();
25922630
// getAuth();
25932631
// getV4Auth();
@@ -2640,6 +2678,9 @@ function GetPrivateM3U8() {
26402678
// getBucketEncryption();
26412679
// deleteBucketEncryption();
26422680
// deleteBucket();
2681+
2682+
2683+
// 对象操作
26432684
// putObjectCopy();
26442685
// getObjectStream();
26452686
// getObject();
@@ -2664,6 +2705,8 @@ function GetPrivateM3U8() {
26642705
// putObjectTagging();
26652706
// getObjectTagging();
26662707
// deleteObjectTagging();
2708+
// appendObject();
2709+
// appendObject_continue();
26672710

26682711
// 其他示例
26692712
// moveObject();
@@ -2675,7 +2718,11 @@ function GetPrivateM3U8() {
26752718
// request();
26762719

26772720
// 数据处理
2678-
//DescribeCIBuckets();
2721+
// DescribeCIBuckets();
2722+
// GetMediaInfo();
2723+
// GetSnapshot();
2724+
2725+
26792726
//DescribeDocProcessBuckets();
26802727
//GetDocProcess()
26812728
//DescribeDocProcessQueues()
@@ -2694,8 +2741,7 @@ function GetPrivateM3U8() {
26942741
//CancelMediaJob();
26952742
//DescribeMediaJob();
26962743
//DescribeMediaJobs();
2697-
//GetSnapshot();
2698-
//GetMediaInfo();
2744+
26992745
//CreateWorkflow();
27002746
//DeleteWorkflow();
27012747
//DescribeWorkflow();

index.d.ts

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,6 +1245,12 @@ declare namespace COS {
12451245
VersionId?: VersionId,
12461246
}
12471247

1248+
/** appendObject 接口参数 */
1249+
interface AppendObjectParams extends PutObjectParams {
1250+
/** 追加操作的起始点 */
1251+
Position: number;
1252+
}
1253+
12481254
// deleteObject
12491255
/** deleteObject 接口参数 */
12501256
interface DeleteObjectParams extends ObjectParams {}
@@ -1769,7 +1775,7 @@ Bulk:批量模式,恢复时间为24 - 48小时。 */
17691775
data: UploadFileItemResult;
17701776
options: UploadFileItemParams;
17711777
}
1772-
type onFileFinish = (params: FileFinishInfo) => void;
1778+
type onFileFinish = (err: Error, data: UploadFileItemResult, options: UploadFileItemParams) => void;
17731779

17741780
type UploadFileParams = (PutObjectParams | SliceUploadFileParams) & {
17751781
/** 要上传的本地文件路径 */
@@ -1848,9 +1854,13 @@ Bulk:批量模式,恢复时间为24 - 48小时。 */
18481854
/** 请求里的 Url Query 参数 */
18491855
Query?: Query,
18501856
/** 请求里的 Body 参数 */
1851-
Body?: Body,
1857+
Body?: Body | string,
18521858
/** 请求的 API 动作接口(可理解为不带 = 的 Query 参数),如 acl、tagging、image_process 等 */
1853-
Action: Action
1859+
Action?: Action,
1860+
/** 请求url */
1861+
Url?: string,
1862+
/** 返回值body是否不需要解析 */
1863+
RawBody?: boolean,
18541864
}
18551865
/** Request 接口返回值 */
18561866
interface RequestResult extends GeneralResult {
@@ -1877,6 +1887,37 @@ Bulk:批量模式,恢复时间为24 - 48小时。 */
18771887
Url: string
18781888
}
18791889

1890+
1891+
/******** 媒体处理相关 ********/
1892+
/** 查询已经开通数据万象功能的存储桶 */
1893+
interface DescribeMediaBucketsParams extends BucketParams {
1894+
PageNumber?: string;
1895+
PageSize?: string;
1896+
Regions?: string;
1897+
BucketNames?: string;
1898+
BucketName?: string;
1899+
}
1900+
1901+
interface DescribeMediaBucketsResult extends GeneralResult {
1902+
CIStatus: boolean;
1903+
}
1904+
1905+
/** 获取媒体文件信息 */
1906+
interface GetMediaInfoResult extends GeneralResult {
1907+
Response: any;
1908+
}
1909+
1910+
/** 获取媒体文件某个时间的截图 */
1911+
interface GetSnapshotParams extends ObjectParams {
1912+
Time?: number;
1913+
Width?: number;
1914+
Height?: number;
1915+
format?: string;
1916+
rotate?: string;
1917+
mode?: string;
1918+
}
1919+
1920+
18801921
// getV4Auth
18811922
interface GetV4AuthParams {
18821923
/** 计算签名用的密钥 SecretId,如果不传会用实例本身的凭证,可选 */
@@ -2254,19 +2295,41 @@ declare class COS {
22542295
/** 判断上传队列是否有未完成的任务 */
22552296
isUploadRunning(): boolean;
22562297

2257-
/** 分片复制文件 */
2298+
/** cos.request */
22582299
request(params: COS.RequestParams, callback: (err: COS.CosError, data: COS.RequestResult) => void): void;
22592300
request(params: COS.RequestParams): Promise<COS.RequestResult>;
22602301

22612302
/** 获取文件下载链接 @see https://cloud.tencent.com/document/product/436/35651 */
22622303
getObjectUrl(params: COS.GetObjectUrlParams, callback: (err: COS.CosError, data: COS.GetObjectUrlResult) => void): string;
22632304

2305+
/** 追加上传 @see https://cloud.tencent.com/document/product/436/7741 */
2306+
appendObject(params: COS.AppendObjectParams, callback: (err: COS.CosError, data: COS.GeneralResult) => void): void;
2307+
appendObject(params: COS.AppendObjectParams): Promise<COS.GeneralResult>;
2308+
2309+
/*********** 媒体处理相关 start *******/
2310+
/** 查询已经开通数据万象功能的存储桶 */
2311+
describeMediaBuckets(params: COS.DescribeMediaBucketsParams, callback: (err: COS.CosError, data: COS.DescribeMediaBucketsResult) => void): void;
2312+
describeMediaBuckets(params: COS.DescribeMediaBucketsParams): Promise<COS.DescribeMediaBucketsResult>;
2313+
2314+
/** 获取媒体文件信息 */
2315+
getMediaInfo(params: COS.ObjectParams, callback: (err: COS.CosError, data: COS.GetMediaInfoResult) => void): void;
2316+
getMediaInfo(params: COS.ObjectParams): Promise<COS.GetMediaInfoResult>;
2317+
2318+
/** 获取媒体文件某个时间的截图 */
2319+
getSnapshot(params: COS.GetSnapshotParams, callback: (err: COS.CosError, data: COS.RequestResult) => void): void;
2320+
getSnapshot(params: COS.GetSnapshotParams): Promise<COS.RequestResult>;
2321+
/*********** 媒体处理相关 end *******/
2322+
22642323
/** 获取 COS JSON API (v4) 签名 @see https://cloud.tencent.com/document/product/436/6054 */
22652324
getV4Auth(params: COS.GetV4AuthParams): COS.Authorization;
22662325

22672326
/** 获取 COS XMl API (v5) 签名 @see https://cloud.tencent.com/document/product/436/7778 */
22682327
getAuth(params: COS.GetAuthParams): COS.Authorization;
22692328

2329+
on(action: string, callback: (params?: any) => void): void;
2330+
off(action: string, callback: (params?: any) => void): void;
2331+
emit(action: string, data?: any): void;
2332+
22702333
}
22712334

22722335
export = COS;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-nodejs-sdk-v5",
3-
"version": "2.10.10",
3+
"version": "2.11.0",
44
"description": "cos nodejs sdk v5",
55
"main": "index.js",
66
"types": "index.d.ts",

0 commit comments

Comments
 (0)