Skip to content

Commit 4efc3a8

Browse files
committed
feat:新增appendObject;新增媒体处理三个接口;
1 parent f7d35fd commit 4efc3a8

File tree

7 files changed

+342
-73
lines changed

7 files changed

+342
-73
lines changed

demo/demo.js

Lines changed: 87 additions & 64 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,48 @@ function CIExample4(){
16461687
* 查询已经开通数据万象功能的存储桶
16471688
*/
16481689
function DescribeCIBuckets() {
1649-
let url = 'https://' +config.Bucket + '.pic.' + config.Region + '.myqcloud.com';
1650-
cos.request({
1651-
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1690+
cos.describeMediaBuckets({
1691+
Bucket: config.Bucket,
16521692
Region: config.Region,
1653-
Method: 'GET',
1654-
Url: url
1655-
}, function (err, data) {
1693+
Regions: 'ap-chengdu',
1694+
// BucketNames: 'blog-1300555317,wx-sdk-1300555317',
1695+
BucketName: 'blog',
1696+
// PageNumber: '1',
1697+
// PageSize: '10',
1698+
},
1699+
function(err, data){
1700+
// var CIStatus = data.CIStatus;
16561701
console.log(err || data);
16571702
});
16581703
}
16591704

16601705

16611706
/**
1662-
* 查询已经开通文档预览功能的存储桶
1707+
* 获取媒体文件信息
1708+
*/
1709+
function GetMediaInfo() {
1710+
cos.getMediaInfo({
1711+
Bucket: config.Bucket,
1712+
Region: config.Region,
1713+
Key: '1.mp4',
1714+
}, function (err, data) {
1715+
console.log(err || data);
1716+
});
1717+
}
1718+
1719+
/**
1720+
* 获取媒体文件某个时间的截图
16631721
*/
1664-
function DescribeDocProcessBuckets() {
1665-
let url = 'https://' + 'ci.' + config.Region + '.myqcloud.com/docbucket';
1666-
cos.request({
1667-
Bucket: config.Bucket, // Bucket 格式:test-1250000000
1668-
Region: config.Region,
1669-
Method: 'GET',
1670-
Key: 'docbucket',
1671-
Url: url,
1672-
Query: {
1673-
pageNumber: '1',
1674-
pageSize: '10'
1675-
}
1676-
}, function (err, data) {
1677-
console.log(err || data);
1678-
});
1722+
function GetSnapshot() {
1723+
cos.getSnapshot({
1724+
Bucket: config.Bucket,
1725+
Region: config.Region,
1726+
Key: '1.mp4',
1727+
Time: 5,
1728+
}, function (err, data) {
1729+
// var Body = data.Body;
1730+
console.log(err || data);
1731+
});
16791732
}
16801733

16811734

@@ -2142,44 +2195,6 @@ function DescribeMediaJobs() {
21422195
}
21432196

21442197

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-
21832198
/**
21842199
* 创建工作流
21852200
*/
@@ -2587,7 +2602,7 @@ function GetPrivateM3U8() {
25872602
});
25882603
}
25892604

2590-
2605+
// 存储桶操作
25912606
// getService();
25922607
// getAuth();
25932608
// getV4Auth();
@@ -2640,6 +2655,9 @@ function GetPrivateM3U8() {
26402655
// getBucketEncryption();
26412656
// deleteBucketEncryption();
26422657
// deleteBucket();
2658+
2659+
2660+
// 对象操作
26432661
// putObjectCopy();
26442662
// getObjectStream();
26452663
// getObject();
@@ -2664,6 +2682,8 @@ function GetPrivateM3U8() {
26642682
// putObjectTagging();
26652683
// getObjectTagging();
26662684
// deleteObjectTagging();
2685+
// appendObject();
2686+
// appendObject_continue();
26672687

26682688
// 其他示例
26692689
// moveObject();
@@ -2675,7 +2695,11 @@ function GetPrivateM3U8() {
26752695
// request();
26762696

26772697
// 数据处理
2678-
//DescribeCIBuckets();
2698+
// DescribeCIBuckets();
2699+
// GetMediaInfo();
2700+
// GetSnapshot();
2701+
2702+
26792703
//DescribeDocProcessBuckets();
26802704
//GetDocProcess()
26812705
//DescribeDocProcessQueues()
@@ -2694,8 +2718,7 @@ function GetPrivateM3U8() {
26942718
//CancelMediaJob();
26952719
//DescribeMediaJob();
26962720
//DescribeMediaJobs();
2697-
//GetSnapshot();
2698-
//GetMediaInfo();
2721+
26992722
//CreateWorkflow();
27002723
//DeleteWorkflow();
27012724
//DescribeWorkflow();

index.d.ts

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,12 @@ declare namespace COS {
12491249
VersionId?: VersionId,
12501250
}
12511251

1252+
/** appendObject 接口参数 */
1253+
interface AppendObjectParams extends PutObjectParams {
1254+
/** 追加操作的起始点 */
1255+
Position: number;
1256+
}
1257+
12521258
// deleteObject
12531259
/** deleteObject 接口参数 */
12541260
interface DeleteObjectParams extends ObjectParams {}
@@ -1773,7 +1779,7 @@ Bulk:批量模式,恢复时间为24 - 48小时。 */
17731779
data: UploadFileItemResult;
17741780
options: UploadFileItemParams;
17751781
}
1776-
type onFileFinish = (params: FileFinishInfo) => void;
1782+
type onFileFinish = (err: Error, data: UploadFileItemResult, options: UploadFileItemParams) => void;
17771783

17781784
type UploadFileParams = (PutObjectParams | SliceUploadFileParams) & {
17791785
/** 要上传的本地文件路径 */
@@ -1852,9 +1858,11 @@ Bulk:批量模式,恢复时间为24 - 48小时。 */
18521858
/** 请求里的 Url Query 参数 */
18531859
Query?: Query,
18541860
/** 请求里的 Body 参数 */
1855-
Body?: Body,
1861+
Body?: Body | string,
18561862
/** 请求的 API 动作接口(可理解为不带 = 的 Query 参数),如 acl、tagging、image_process 等 */
1857-
Action: Action
1863+
Action?: Action,
1864+
/** 请求url */
1865+
Url?: string,
18581866
}
18591867
/** Request 接口返回值 */
18601868
interface RequestResult extends GeneralResult {
@@ -1881,6 +1889,37 @@ Bulk:批量模式,恢复时间为24 - 48小时。 */
18811889
Url: string
18821890
}
18831891

1892+
1893+
/******** 媒体处理相关 ********/
1894+
/** 查询已经开通数据万象功能的存储桶 */
1895+
interface DescribeMediaBucketsParams extends BucketParams {
1896+
PageNumber?: string;
1897+
PageSize?: string;
1898+
Regions?: string;
1899+
BucketNames?: string;
1900+
BucketName?: string;
1901+
}
1902+
1903+
interface DescribeMediaBucketsResult extends GeneralResult {
1904+
CIStatus: boolean;
1905+
}
1906+
1907+
/** 获取媒体文件信息 */
1908+
interface GetMediaInfoResult extends GeneralResult {
1909+
Response: any;
1910+
}
1911+
1912+
/** 获取媒体文件某个时间的截图 */
1913+
interface GetSnapshotParams extends ObjectParams {
1914+
Time?: number;
1915+
Width?: number;
1916+
Height?: number;
1917+
format?: string;
1918+
rotate?: string;
1919+
mode?: string;
1920+
}
1921+
1922+
18841923
// getV4Auth
18851924
interface GetV4AuthParams {
18861925
/** 计算签名用的密钥 SecretId,如果不传会用实例本身的凭证,可选 */
@@ -2265,12 +2304,34 @@ declare class COS {
22652304
/** 获取文件下载链接 @see https://cloud.tencent.com/document/product/436/35651 */
22662305
getObjectUrl(params: COS.GetObjectUrlParams, callback: (err: COS.CosError, data: COS.GetObjectUrlResult) => void): string;
22672306

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

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

2331+
on(action: string, callback: () => void): void;
2332+
off(action: string, callback: () => void): void;
2333+
emit(action: string, data?: any): void;
2334+
22742335
}
22752336

22762337
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)