hexo/node_modules/cos-nodejs-sdk-v5/demo/demo.js

5637 lines
164 KiB
JavaScript
Raw Normal View History

2023-10-03 11:14:36 +08:00
// @ts-check
var fs = require('fs');
var path = require('path');
var util = require('./util');
var COS = require('../index');
var pathLib = require('path');
var config = require('./config');
var json2xml = require('../sdk/util').json2xml;
var cos = new COS({
// 必选参数
SecretId: config.SecretId,
SecretKey: config.SecretKey,
// 可选参数
FileParallelLimit: 3, // 控制文件上传并发数
ChunkParallelLimit: 8, // 控制单个文件下分片上传并发数,在同园区上传可以设置较大的并发数
ChunkSize: 1024 * 1024 * 8, // 控制分片大小,单位 B在同园区上传可以设置较大的分片大小
Proxy: '',
Protocol: 'https:',
FollowRedirect: false,
});
var TaskId;
function camSafeUrlEncode(str) {
return encodeURIComponent(str)
.replace(/!/g, '%21')
.replace(/'/g, '%27')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A');
}
function getAuth() {
var key = '1mb.zip';
var auth = cos.getAuth({
Method: 'get',
Key: key,
Expires: 60,
});
// 注意:这里的 Bucket 格式是 test-1250000000
console.log(
'http://' +
config.Bucket +
'.cos.' +
config.Region +
'.myqcloud.com' +
'/' +
camSafeUrlEncode(key).replace(/%2F/g, '/') +
'?sign=' +
encodeURIComponent(auth),
);
}
function getV4Auth() {
console.log();
var key = '中文.txt';
var auth = cos.getV4Auth({
Bucket: config.Bucket,
Key: key,
Expires: 60,
});
// 注意:这里的 Bucket 格式是 test-1250000000
console.log(
'http://' +
config.Bucket +
'.cos.' +
config.Region +
'.myqcloud.com' +
'/' +
camSafeUrlEncode(key).replace(/%2F/g, '/') +
'?sign=' +
encodeURIComponent(auth),
);
}
function getObjectUrl() {
var url = cos.getObjectUrl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
Expires: 60,
Sign: true,
},
function (err, data) {
console.log(err || data);
},
);
console.log(url);
}
function getService() {
cos.getService(
{
Region: 'ap-guangzhou',
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucket() {
cos.putBucket(
{
Bucket: 'testnew-' + config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1),
Region: 'ap-guangzhou',
// BucketAZConfig: 'MAZ',
// BucketArchConfig: 'OFS',
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucket() {
cos.getBucket(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function headBucket() {
cos.headBucket(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucket() {
cos.deleteBucket(
{
Bucket: 'testnew-' + config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1),
Region: 'ap-guangzhou',
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketAcl() {
cos.putBucketAcl(
{
Bucket: config.Bucket,
Region: config.Region,
// GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantWrite: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantRead: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantReadAcp: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantWriteAcp: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// ACL: 'public-read-write',
// ACL: 'public-read',
ACL: 'private',
AccessControlPolicy: {
Owner: {
// AccessControlPolicy 里必须有 owner
ID: 'qcs::cam::uin/10001:uin/10001', // 10001 是 Bucket 所属用户的 QQ 号
},
Grants: [
{
Grantee: {
URI: 'http://cam.qcloud.com/groups/global/AllUsers', // 允许匿名用户组访问
},
Permission: 'READ',
},
{
Grantee: {
ID: 'qcs::cam::uin/1001:uin/1001', // 10002 是 QQ 号
},
Permission: 'WRITE',
},
{
Grantee: {
ID: 'qcs::cam::uin/10002:uin/10002', // 10002 是 QQ 号
},
Permission: 'READ_ACP',
},
{
Grantee: {
ID: 'qcs::cam::uin/10002:uin/10002', // 10002 是 QQ 号
},
Permission: 'WRITE_ACP',
},
],
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketAcl() {
cos.getBucketAcl(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketCors() {
cos.putBucketCors(
{
Bucket: config.Bucket,
Region: config.Region,
ResponseVary: 'true',
CORSRules: [
{
AllowedOrigin: ['*'],
AllowedMethod: ['GET', 'POST', 'PUT', 'DELETE', 'HEAD'],
AllowedHeader: ['*'],
ExposeHeader: [
'ETag',
'Date',
'Content-Length',
'x-cos-acl',
'x-cos-version-id',
'x-cos-request-id',
'x-cos-delete-marker',
'x-cos-server-side-encryption',
],
MaxAgeSeconds: 5,
},
],
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketCors() {
cos.getBucketCors(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketCors() {
cos.deleteBucketCors(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketPolicy() {
var AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
cos.putBucketPolicy(
{
Policy: {
version: '2.0',
statement: [
{
effect: 'allow',
principal: { qcs: ['qcs::cam::uin/10001:uin/10001'] }, // 这里的 10001 是 QQ 号
action: [
// 这里可以从临时密钥的权限上控制前端允许的操作
// 'name/cos:*', // 这样写可以包含下面所有权限
// // 列出所有允许的操作
// // ACL 读写
// 'name/cos:GetBucketACL',
// 'name/cos:PutBucketACL',
// 'name/cos:GetObjectACL',
// 'name/cos:PutObjectACL',
// // 简单 Bucket 操作
// 'name/cos:PutBucket',
// 'name/cos:HeadBucket',
// 'name/cos:GetBucket',
// 'name/cos:DeleteBucket',
// 'name/cos:GetBucketLocation',
// // Versioning
// 'name/cos:PutBucketVersioning',
// 'name/cos:GetBucketVersioning',
// // CORS
// 'name/cos:PutBucketCORS',
// 'name/cos:GetBucketCORS',
// 'name/cos:DeleteBucketCORS',
// // Lifecycle
// 'name/cos:PutBucketLifecycle',
// 'name/cos:GetBucketLifecycle',
// 'name/cos:DeleteBucketLifecycle',
// // Replication
// 'name/cos:PutBucketReplication',
// 'name/cos:GetBucketReplication',
// 'name/cos:DeleteBucketReplication',
// // 删除文件
// 'name/cos:DeleteMultipleObject',
// 'name/cos:DeleteObject',
// 简单文件操作
'name/cos:PutObject',
'name/cos:AppendObject',
'name/cos:GetObject',
'name/cos:HeadObject',
'name/cos:OptionsObject',
'name/cos:PutObjectCopy',
'name/cos:PostObjectRestore',
// 分片上传操作
'name/cos:InitiateMultipartUpload',
'name/cos:ListMultipartUploads',
'name/cos:ListParts',
'name/cos:UploadPart',
'name/cos:CompleteMultipartUpload',
'name/cos:AbortMultipartUpload',
],
// "resource": ["qcs::cos:ap-guangzhou:uid/1250000000:test-1250000000/*"] // 1250000000 是 appid
resource: ['qcs::cos:' + config.Region + ':uid/' + AppId + ':' + config.Bucket + '/*'], // 1250000000 是 appid
},
],
},
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketPolicy() {
cos.getBucketPolicy(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketPolicy() {
cos.deleteBucketPolicy(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketLocation() {
cos.getBucketLocation(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketTagging() {
cos.putBucketTagging(
{
Bucket: config.Bucket,
Region: config.Region,
Tags: [
{ Key: 'k1', Value: 'v1' },
{ Key: 'k2', Value: 'v2' },
],
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketTagging() {
cos.getBucketTagging(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketTagging() {
cos.deleteBucketTagging(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketLifecycle() {
cos.putBucketLifecycle(
{
Bucket: config.Bucket,
Region: config.Region,
Rules: [
{
ID: '1',
Status: 'Enabled',
Filter: {},
Transition: {
Days: '30',
StorageClass: 'STANDARD_IA',
},
},
{
ID: '2',
Status: 'Enabled',
Filter: {
Prefix: 'dir/',
},
Transition: {
Days: '180',
StorageClass: 'ARCHIVE',
},
},
{
ID: '3',
Status: 'Enabled',
Filter: {},
Expiration: {
Days: '180',
},
},
{
ID: '4',
Status: 'Enabled',
Filter: {},
AbortIncompleteMultipartUpload: {
DaysAfterInitiation: '30',
},
},
],
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketLifecycle() {
cos.getBucketLifecycle(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketLifecycle() {
cos.deleteBucketLifecycle(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketVersioning() {
cos.putBucketVersioning(
{
Bucket: config.Bucket,
Region: config.Region,
VersioningConfiguration: {
Status: 'Enabled',
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketVersioning() {
cos.getBucketVersioning(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketReplication() {
var AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
cos.putBucketReplication(
{
Bucket: config.Bucket,
Region: config.Region,
ReplicationConfiguration: {
Role: 'qcs::cam::uin/10001:uin/10001',
Rules: [
{
ID: '1',
Status: 'Enabled',
Prefix: 'sync/',
Destination: {
Bucket: 'qcs:id/0:cos:ap-chengdu:appid/' + AppId + ':backup',
// StorageClass: "Standard",
},
},
],
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketReplication() {
cos.getBucketReplication(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketReplication() {
cos.deleteBucketReplication(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketWebsite() {
cos.putBucketWebsite(
{
Bucket: config.Bucket,
Region: config.Region,
WebsiteConfiguration: {
IndexDocument: {
Suffix: 'index.html', // 必选
},
RedirectAllRequestsTo: {
Protocol: 'https',
},
// ErrorDocument: {
// Key: "error.html"
// },
// RoutingRules: [{
// Condition: {
// HttpErrorCodeReturnedEquals: "404"
// },
// Redirect: {
// Protocol: "https",
// ReplaceKeyWith: "404.html"
// }
// }, {
// Condition: {
// KeyPrefixEquals: "docs/"
// },
// Redirect: {
// Protocol: "https",
// ReplaceKeyPrefixWith: "documents/"
// }
// }, {
// Condition: {
// KeyPrefixEquals: "img/"
// },
// Redirect: {
// Protocol: "https",
// ReplaceKeyWith: "picture.jpg"
// }
// }]
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketWebsite() {
cos.getBucketWebsite(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketWebsite() {
cos.deleteBucketWebsite(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketReferer() {
cos.putBucketReferer(
{
Bucket: config.Bucket,
Region: config.Region,
RefererConfiguration: {
Status: 'Enabled',
RefererType: 'White-List',
DomainList: {
Domains: ['*.qq.com', '*.qcloud.com'],
},
EmptyReferConfiguration: 'Allow',
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketReferer() {
cos.getBucketReferer(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || JSON.stringify(data, null, ' '));
},
);
}
function putBucketDomain() {
cos.putBucketDomain(
{
Bucket: config.Bucket,
Region: config.Region,
DomainRule: [
{
Status: 'DISABLED',
Name: 'www.testDomain1.com',
Type: 'REST',
},
{
Status: 'DISABLED',
Name: 'www.testDomain2.com',
Type: 'WEBSITE',
},
],
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketDomain() {
cos.getBucketDomain(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketDomain() {
cos.deleteBucketDomain(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketOrigin() {
cos.putBucketOrigin(
{
Bucket: config.Bucket,
Region: config.Region,
OriginRule: [
{
OriginType: 'Mirror',
OriginCondition: { HTTPStatusCode: 404, Prefix: '' },
OriginParameter: {
Protocol: 'HTTP',
FollowQueryString: 'true',
HttpHeader: {
NewHttpHeader: {
Header: [
{
Key: 'a',
Value: 'a',
},
],
},
},
FollowRedirection: 'true',
HttpRedirectCode: ['301', '302'],
},
OriginInfo: {
HostInfo: { HostName: 'qq.com' },
FileInfo: {
PrefixConfiguration: { Prefix: '123/' },
SuffixConfiguration: { Suffix: '.jpg' },
},
},
RulePriority: 1,
},
],
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketOrigin() {
cos.getBucketOrigin(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketOrigin() {
cos.deleteBucketOrigin(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketLogging() {
var AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
cos.putBucketLogging(
{
Bucket: config.Bucket,
Region: config.Region,
BucketLoggingStatus: {
LoggingEnabled: {
TargetBucket: 'bucket-logging-' + AppId,
TargetPrefix: 'logging',
},
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketLogging() {
cos.getBucketLogging(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteBucketLogging() {
cos.putBucketLogging(
{
Bucket: config.Bucket,
Region: config.Region,
BucketLoggingStatus: {},
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketInventory() {
var AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
cos.putBucketInventory(
{
Bucket: config.Bucket,
Region: config.Region,
Id: 'inventory_test',
InventoryConfiguration: {
Id: 'inventory_test',
IsEnabled: 'true',
Destination: {
COSBucketDestination: {
Format: 'CSV',
AccountId: config.Uin,
Bucket: 'qcs::cos:ap-guangzhou::bucket-logging-' + AppId,
Prefix: 'inventory',
Encryption: {
SSECOS: '',
},
},
},
Schedule: {
Frequency: 'Daily',
},
Filter: {
Prefix: 'myPrefix',
},
IncludedObjectVersions: 'All',
OptionalFields: [
'Size',
'LastModifiedDate',
'ETag',
'StorageClass',
'IsMultipartUploaded',
'ReplicationStatus',
],
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketInventory() {
cos.getBucketInventory(
{
Bucket: config.Bucket,
Region: config.Region,
Id: 'inventory_test',
},
function (err, data) {
console.log(err || JSON.stringify(data));
},
);
}
function deleteBucketInventory() {
cos.deleteBucketInventory(
{
Bucket: config.Bucket,
Region: config.Region,
Id: 'inventory_test',
},
function (err, data) {
console.log(err || JSON.stringify(data));
},
);
}
function listBucketInventory() {
cos.listBucketInventory(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || JSON.stringify(data));
},
);
}
function putBucketAccelerate() {
cos.putBucketAccelerate(
{
Bucket: config.Bucket,
Region: config.Region,
AccelerateConfiguration: {
Status: 'Enabled',
},
},
function (err, data) {
console.log(err || data);
},
);
}
function getBucketAccelerate() {
cos.getBucketAccelerate(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || data);
},
);
}
function putBucketEncryption() {
cos.putBucketEncryption(
{
Bucket: config.Bucket,
Region: config.Region,
ServerSideEncryptionConfiguration: {
Rule: [
{
ApplySideEncryptionConfiguration: {
SSEAlgorithm: 'AES256',
},
},
],
},
},
function (err, data) {
console.log(JSON.stringify(err || data, null, 2));
},
);
}
function getBucketEncryption() {
cos.getBucketEncryption(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || JSON.stringify(data));
},
);
}
function deleteBucketEncryption() {
cos.deleteBucketEncryption(
{
Bucket: config.Bucket,
Region: config.Region,
},
function (err, data) {
console.log(err || JSON.stringify(data));
},
);
}
function putObject() {
// 创建测试文件
var filename = '1mb.zip';
var filepath = path.resolve(__dirname, filename);
util.createFile(filepath, 1024 * 1024, function (err) {
// 调用方法
cos.putObject(
{
Bucket: config.Bucket /* 必须 */,
Region: config.Region,
Key: filename /* 必须 */,
onTaskReady: function (tid) {
TaskId = tid;
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
// 格式1. 传入文件内容
// Body: fs.readFileSync(filepath),
// 格式2. 传入文件流,必须需要传文件大小
Body: fs.createReadStream(filepath),
ContentLength: fs.statSync(filepath).size,
Headers: {
// 万象持久化接口,上传时持久化
// 'Pic-Operations': '{"is_pic_info": 1, "rules": [{"fileid": "test.jpg", "rule": "imageMogr2/thumbnail/!50p"}]}'
},
},
function (err, data) {
console.log(err || data);
fs.unlinkSync(filepath);
},
);
});
}
function putObject_base64ToBuffer() {
// 创建测试文件
var filename = 'test.png';
var filepath = path.resolve(__dirname, filename);
var base64Url =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABRFBMVEUAAAAAo/8Ao/8Ao/8Ao/8ApP8Aov8Ao/8Abv8Abv8AyNwAyNwAo/8Ao/8Ao/8Abv8Ao/8AivgAo/8AyNwAbv8Abv8AydwApf8Abf8Ao/8AbP8Ao/8AyNwAydwAbv8AydwApP8Ao/8AyNwAo/8AyNwAydsAyNwAxd8Aov8AyNwAytsAo/8Abv8AyNwAbv8Av+MAo/8AytsAo/8Abv8AyNwAo/8Abv8AqfkAbv8Aov8Abv8AyNwAov8Abv8Ao/8Abv8Ao/8AydwAo/8Ao/8Ate8Ay9oAvOcAof8AveAAyNwAyNwAo/8AyNwAy9kAo/8AyNwAyNwAo/8AqP8Aaf8AyNwAbv0Abv8Abv8AaP8Ao/8Ao/8Ao/8Ao/8Abv8AyNwAgvcAaP8A0dkAo/8AyNwAav8Abv8Ao/8Abv8AyNwAy9sAvOUAtePdkYxjAAAAZnRSTlMAw/co8uAuJAn8+/Tt29R8DAX77+nZz87Jv6CTh3lxTklAPjouJRsL5tjAuLiyr62roaCakYp0XVtOQTMyLiohICAcGRP49vTv5+PJurawq6mnnJuYl4+OiIB7eXVvX15QSDgqHxNcw3l6AAABe0lEQVQ4y82P11oCQQxGIy5FUJpKk6aAhV6k92LvvXedDfj+92ZkYQHxnnMxu3/OfJMEJo6y++baXf5XVw22GVGcsRmq431mQZRYyIzRGgdXi+HwIv86NDBKisrRAtU1hSj9pkZ9jpo/9YKbRsmNNKCHDXI00BxfMMirKNpMcjQ5Lm4/YZArUXyBYUwg40nsdr5jb3LBe25VWpNeKa1GENsEnq52C80z1uW48estiKjb19G54QdCrScnKAU69U3KJ4jzrsBawDWPuOcBqMyRvlcb1Y+zjMUBVsivAKe4gXgEKiVjSh9wlunGMmwiOqFL3RI0cj+nkgp3jC1BELVFkGiZSuvkp3tZZWZ2sKCuDj185PXqfmwI7AAOUctHkJoOeXg3sxA4ES+l7CVvrYHMEmNp8GtR+wycPG0+1RrwWQUzl4CvgQmPP5Ddofl8tWkJVT7J+BIAaxEktrYZoRAUfXgOGYHfcOqw3WF/EdLccz5cMfvUCPb4QwUmhB8+v12HZPCkbgAAAABJRU5ErkJggg==';
var body = Buffer.from(base64Url.split(',')[1], 'base64');
util.createFile(filepath, 1024 * 1024, function (err) {
// 调用方法
cos.putObject(
{
Bucket: config.Bucket /* 必须 */,
Region: config.Region,
Key: filename /* 必须 */,
onTaskReady: function (tid) {
TaskId = tid;
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
// 格式1. 传入文件内容
// Body: fs.readFileSync(filepath),
// 格式2. 传入文件流,必须需要传文件大小
Body: body,
ContentLength: body.length,
Headers: {
// 万象持久化接口,上传时持久化
// 'Pic-Operations': '{"is_pic_info": 1, "rules": [{"fileid": "test.jpg", "rule": "imageMogr2/thumbnail/!50p"}]}'
},
},
function (err, data) {
console.log(err || data);
fs.unlinkSync(filepath);
},
);
});
}
function putObjectCopy() {
cos.putObjectCopy(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.copy.zip',
CopySource:
config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + camSafeUrlEncode('1mb.zip').replace(/%2F/g, '/'),
},
function (err, data) {
console.log(err || data);
},
);
}
function getObject() {
var filepath1 = path.resolve(__dirname, '1mb.out1.zip');
var filepath2 = path.resolve(__dirname, '1mb.out2.zip');
var filepath3 = path.resolve(__dirname, '1mb.out3.zip');
// file1 获取对象字节到内存变量
cos.getObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
},
function (err, data) {
if (data) {
fs.writeFileSync(filepath1, data.Body);
} else {
console.log(err);
}
},
);
}
function headObject() {
cos.headObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
},
function (err, data) {
console.log(err || data);
},
);
}
function listObjectVersions() {
cos.listObjectVersions(
{
Bucket: config.Bucket,
Region: config.Region,
// Prefix: "",
// Delimiter: '/'
},
function (err, data) {
console.log(err || JSON.stringify(data, null, ' '));
},
);
}
function putObjectAcl() {
cos.putObjectAcl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
// GrantFullControl: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantWriteAcp: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantReadAcp: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// GrantRead: 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"',
// ACL: 'public-read-write',
// ACL: 'public-read',
// ACL: 'private',
ACL: 'default', // 继承上一级目录权限
// AccessControlPolicy: {
// "Owner": { // AccessControlPolicy 里必须有 owner
// "ID": 'qcs::cam::uin/459000000:uin/459000000' // 459000000 是 Bucket 所属用户的 QQ 号
// },
// "Grants": [{
// "Grantee": {
// "ID": "qcs::cam::uin/10002:uin/10002", // 10002 是 QQ 号
// },
// "Permission": "READ"
// }]
// }
},
function (err, data) {
console.log(err || data);
},
);
}
function getObjectAcl() {
cos.getObjectAcl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteObject() {
cos.deleteObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteMultipleObject() {
cos.deleteMultipleObject(
{
Bucket: config.Bucket,
Region: config.Region,
Objects: [{ Key: '中文/中文.txt' }, { Key: '中文/中文.zip', VersionId: 'MTg0NDY3NDI1MzM4NzM0ODA2MTI' }],
},
function (err, data) {
console.log(err || data);
},
);
}
function restoreObject() {
cos.restoreObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1.txt',
RestoreRequest: {
Days: 1,
CASJobParameters: {
Tier: 'Expedited',
},
},
},
function (err, data) {
console.log(err || data);
},
);
}
var selectCsvOpt = {
Bucket: config.Bucket,
Region: config.Region,
Key: '1.csv',
SelectType: 2,
SelectRequest: {
// Expression: "select * from cosobject s limit 100",
Expression: 'Select * from COSObject',
ExpressionType: 'SQL',
InputSerialization: {
CSV: {
FileHeaderInfo: 'IGNORE',
RecordDelimiter: '\\n',
FieldDelimiter: ',',
QuoteCharacter: '"',
QuoteEscapeCharacter: '"',
Comments: '#',
AllowQuotedRecordDelimiter: 'FALSE',
},
},
OutputSerialization: {
CSV: {
QuoteFields: 'ASNEEDED',
RecordDelimiter: '\\n',
FieldDelimiter: ',',
QuoteCharacter: '"',
QuoteEscapeCharacter: '"',
},
},
RequestProgress: { Enabled: 'FALSE' },
},
};
var selectJsonOpt = {
Bucket: config.Bucket,
Region: config.Region,
Key: '1.json',
SelectType: 2,
SelectRequest: {
Expression: 'Select * from COSObject',
ExpressionType: 'SQL',
InputSerialization: { JSON: { Type: 'DOCUMENT' } },
OutputSerialization: { JSON: { RecordDelimiter: '\n' } },
RequestProgress: { Enabled: 'FALSE' },
},
};
function selectObjectContentStream() {
// 查询 JSON
var opt = Object.assign(
{
// DataType: 'raw',
},
selectJsonOpt,
);
var selectStream = cos.selectObjectContentStream(opt, function (err, data) {
console.log(err || data);
});
var outFile = './result.txt';
selectStream.pipe(fs.createWriteStream(outFile));
selectStream.on('end', () => console.log(fs.readFileSync(outFile).toString()));
}
function selectObjectContent() {
// // 如果返回结果很大,可以用 selectObjectContentStream 处理
// // 查询 CSV
// cos.selectObjectContent(selectCsvOpt, function (err, data) {
// console.log(err || data);
// });
// 查询 JSON
cos.selectObjectContent(selectJsonOpt, function (err, data) {
console.log(err || data);
});
}
function multipartList() {
cos.multipartList(
{
Bucket: config.Bucket,
Region: config.Region,
Prefix: '',
MaxUploads: 1,
Delimiter: '/',
},
function (err, data) {
console.log(err || JSON.stringify(data, null, 2));
},
);
}
function multipartListPart() {
cos.multipartListPart(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '10mb.zip',
MaxParts: 1,
UploadId: 'xxx',
},
function (err, data) {
console.log(err || JSON.stringify(data, null, 2));
},
);
}
function multipartInit() {
cos.multipartInit(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '10mb.zip',
},
function (err, data) {
console.log(err || JSON.stringify(data, null, 2));
},
);
}
function multipartUpload() {
cos.multipartUpload(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '10mb.zip',
UploadId: 'xxx',
PartNumber: 1,
Body: '123',
},
function (err, data) {
console.log(err || JSON.stringify(data, null, 2));
},
);
}
function multipartCom() {
cos.multipartComplete(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1.zip',
UploadId: 'xxx',
Parts: [
{
PartNumber: 1,
ETag: 'xxx',
},
],
},
function (err, data) {
console.log(err || JSON.stringify(data, null, 2));
},
);
}
function multipartAbort() {
cos.multipartAbort(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '10mb.zip',
UploadId: 'xxx',
},
function (err, data) {
console.log(err || JSON.stringify(data, null, 2));
},
);
}
function abortUploadTask() {
cos.abortUploadTask(
{
Bucket: config.Bucket /* 必须 */,
Region: config.Region /* 必须 */,
// 格式1删除单个上传任务
// Level: 'task',
// Key: '10mb.zip',
// UploadId: '14985543913e4e2642e31db217b9a1a3d9b3cd6cf62abfda23372c8d36ffa38585492681e3',
// 格式2删除单个文件所有未完成上传任务
Level: 'file',
Key: '10mb.zip',
// 格式3删除 Bucket 下所有未完成上传任务
// Level: 'bucket',
},
function (err, data) {
console.log(err || data);
},
);
}
function sliceUploadFile() {
// 创建测试文件
var filename = '10mb.zip';
var filepath = path.resolve(__dirname, filename);
util.createFile(filepath, 1024 * 1024 * 10, function (err) {
// 调用方法
cos.sliceUploadFile(
{
Bucket: config.Bucket /* 必须 */,
Region: config.Region,
Key: filename /* 必须 */,
FilePath: filepath /* 必须 */,
onTaskReady: function (tid) {
TaskId = tid;
},
onHashProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
Headers: {
// 万象持久化接口,上传时持久化
// 'Pic-Operations': '{"is_pic_info": 1, "rules": [{"fileid": "test.jpg", "rule": "imageMogr2/thumbnail/!50p"}]}'
},
},
function (err, data) {
console.log(err || data);
fs.unlinkSync(filepath);
},
);
});
}
function cancelTask() {
cos.cancelTask(TaskId);
console.log('canceled');
}
function pauseTask() {
cos.pauseTask(TaskId);
console.log('paused');
}
function restartTask() {
cos.restartTask(TaskId);
console.log('restart');
}
function uploadFile() {
var filename = '3mb.zip';
var filepath = path.resolve(__dirname, filename);
util.createFile(filepath, 1024 * 1024 * 3, function (err) {
cos.uploadFile(
{
Bucket: config.Bucket,
Region: config.Region,
Key: filename,
FilePath: filepath,
SliceSize: 1024 * 1024 * 5, // 大于5mb才进行分块上传
onProgress: function (info) {
var percent = Math.floor(info.percent * 10000) / 100;
var speed = Math.floor((info.speed / 1024 / 1024) * 100) / 100;
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
},
},
function (err, data) {
console.log('上传' + (err ? '失败' : '完成'));
console.log(err || data);
fs.unlinkSync(filepath);
},
);
});
}
function uploadFiles() {
var filepath = path.resolve(__dirname, '1mb.zip');
util.createFile(filepath, 1024 * 1024 * 10, function (err) {
var filename = 'mb.zip';
cos.uploadFiles(
{
files: [
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1' + filename,
FilePath: filepath,
},
{
Bucket: config.Bucket,
Region: config.Region,
Key: '2' + filename,
FilePath: filepath,
// }, {
// Bucket: config.Bucket,
// Region: config.Region,
// Key: '3' + filename,
// FilePath: filepath,
},
],
SliceSize: 1024 * 1024,
onProgress: function (info) {
var percent = Math.floor(info.percent * 10000) / 100;
var speed = Math.floor((info.speed / 1024 / 1024) * 100) / 100;
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
},
onFileFinish: function (err, data, options) {
console.log(options.Key + ' 上传' + (err ? '失败' : '完成'));
},
},
function (err, data) {
console.log(err || data);
fs.unlinkSync(filepath);
},
);
});
}
function sliceCopyFile() {
// 创建测试文件
var sourceName = '3mb.zip';
var Key = '3mb.copy.zip';
var sourcePath =
config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + camSafeUrlEncode(sourceName).replace(/%2F/g, '/');
cos.sliceCopyFile(
{
Bucket: config.Bucket,
Region: config.Region,
Key: Key,
CopySource: sourcePath,
CopySliceSize: 2 * 1024 * 1024, // 大于2M的文件用分片复制小于则用单片复制
onProgress: function (info) {
var percent = Math.floor(info.percent * 10000) / 100;
var speed = Math.floor((info.speed / 1024 / 1024) * 100) / 100;
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
},
},
function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
},
);
}
function putObjectTagging() {
cos.putObjectTagging(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
Tags: [
{ Key: 'k1', Value: 'v1' },
{ Key: 'k2', Value: 'v2' },
],
},
function (err, data) {
console.log(err || data);
},
);
}
function getObjectTagging() {
cos.getObjectTagging(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
},
function (err, data) {
console.log(err || data);
},
);
}
function deleteObjectTagging() {
cos.getObjectTagging(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1mb.zip',
},
function (err, data) {
console.log(err || data);
},
);
}
/* 移动对象*/
function moveObject() {
// COS 没有对象重命名或移动的接口,移动对象可以通过复制/删除对象实现
var source = 'source.txt';
var target = 'target.txt';
var copySource =
config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + camSafeUrlEncode(source).replace(/%2F/g, '/');
cos.putObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: source,
Body: 'hello!',
},
function (err, data) {
if (err) return console.log(err);
cos.putObjectCopy(
{
Bucket: config.Bucket,
Region: config.Region,
Key: target,
CopySource: copySource,
},
function (err, data) {
if (err) return console.log(err);
cos.deleteObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: source,
},
function (err, data) {
console.log(err || data);
},
);
},
);
},
);
}
/* 上传本地文件夹 */
function uploadFolder() {
var localFolder = '../test/';
var remotePrefix = 'folder/';
util.fastListFolder(localFolder, function (err, list) {
if (err) return console.error(err);
var files = list.map(function (file) {
var filename = pathLib.relative(localFolder, file.path).replace(/\\/g, '/');
if (filename && file.isDir && !filename.endsWith('/')) filename += '/';
var Key = remotePrefix + filename;
return {
Bucket: config.Bucket,
Region: config.Region,
Key: Key,
FilePath: file.path,
};
});
cos.uploadFiles(
{
files: files,
SliceSize: 1024 * 1024,
onProgress: function (info) {
var percent = Math.floor(info.percent * 10000) / 100;
var speed = Math.floor((info.speed / 1024 / 1024) * 100) / 100;
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
},
onFileFinish: function (err, data, options) {
console.log(options.Key + ' 上传' + (err ? '失败' : '完成'));
},
},
function (err, data) {
console.log(err || data);
},
);
});
}
/* 创建文件夹 */
function createFolder() {
cos.putObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: 'folder/', // 对象存储没有实际的文件夹,可以创建一个路径以 / 结尾的空对象表示,能在部分场景中满足文件夹使用需要
Body: '',
},
function (err, data) {
console.log(err || data);
},
);
}
/* 列出文件夹下的文件 */
function listFolder() {
var _listFolder = function (params, callback) {
var Contents = [];
var CommonPrefixes = [];
var marker;
var next = function () {
params.Marker = marker;
cos.getBucket(params, function (err, data) {
if (err) return callback(err);
data &&
data.CommonPrefixes &&
data.CommonPrefixes.forEach(function (item) {
CommonPrefixes.push(item);
});
data &&
data.Contents &&
data.Contents.forEach(function (item) {
Contents.push(item);
});
if (data.IsTruncated === 'true') {
marker = data.NextMarker;
next();
} else {
callback(null, {
CommonPrefixes: CommonPrefixes,
Contents: Contents,
});
}
});
};
next();
};
_listFolder(
{
Bucket: config.Bucket,
Region: config.Region,
Delimiter: '/', // 如果按目录列出文件传入该分隔符,如果要深度列出文件不传改参数
Prefix: 'folder/', // 要列出的目录前缀
},
function (err, data) {
console.log(err || data);
},
);
}
/* 删除指定文件夹下的所有对象(删除存储桶里指定前缀所有对象) */
function deleteFolder() {
var _deleteFolder = function (params, callback) {
var deletedList = [];
var errorList = [];
var marker;
var next = function () {
params.Marker = marker;
cos.getBucket(params, function (err, data) {
if (err) return callback(err);
var Objects = [];
if (data && data.Contents && data.Contents.length) {
data.Contents.forEach(function (item) {
Objects.push({ Key: item.Key });
});
}
var afterDeleted = function () {
if (data.IsTruncated === 'true') {
marker = data.NextMarker;
next();
} else {
callback(null, { Deleted: deletedList, Error: errorList });
}
};
if (Objects.length) {
cos.deleteMultipleObject(
{
Bucket: params.Bucket,
Region: params.Region,
Objects: Objects,
},
function (err, data) {
data.Deleted &&
data.Deleted.forEach(function (item) {
deletedList.push(item);
});
data.Error &&
data.Error.forEach(function (item) {
errorList.push(item);
});
afterDeleted();
},
);
} else {
afterDeleted();
}
});
};
next();
};
_deleteFolder(
{
Bucket: config.Bucket,
Region: config.Region,
Prefix: 'folder/', // 要列出的目录前缀
},
function (err, data) {
console.log(err || data);
},
);
}
/* 分片下载文件 */
function downloadFile() {
// 单文件分片并发下载
var Key = 'windows_7_ultimate_x64.iso';
cos.downloadFile(
{
Bucket: config.Bucket,
Region: config.Region,
Key: Key,
FilePath: './' + Key,
ChunkSize: 1024 * 1024 * 8, // 文件大于 8MB 用分片下载
ParallelLimit: 5, // 分片并发数
RetryTimes: 3, // 分片失败重试次数
TaskId: '123',
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
},
function (err, data) {
console.log(err || data);
},
);
// 取消下载任务
// cos.emit('inner-kill-task', {TaskId: '123'});
}
// 追加上传
function appendObject() {
cos.appendObject(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: 'append1.txt' /* 必须 */,
Body: '12345',
Position: 0,
},
function (err, data) {
console.log(err || data);
},
);
}
// 继续追加上传
function appendObject_continue() {
cos.headObject(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: 'append1.txt' /* 必须 */,
},
function (err, data) {
if (err) return console.log(err);
// 首先取到要追加的文件当前长度即需要上送的Position
var position = data.headers && data.headers['content-length'];
cos.appendObject(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: 'append1.txt' /* 必须 */,
Body: '66666',
Position: position,
},
function (err, data) {
// 也可以取到下一次上传的position继续追加上传
var nextPosition = data.headers && data.headers['x-cos-next-append-position'];
console.log(err || data);
},
);
},
);
}
function request() {
// 对云上数据进行图片处理
var filename = 'example_photo.png';
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Key: filename,
Method: 'POST',
Action: 'image_process',
Headers: {
// 万象持久化接口,上传时持久化
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "example_photo_ci_result.png", "rule": "imageMogr2/thumbnail/200x/"}]}',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* function CIExample1
* @description 上传时使用图片处理
*/
function CIExample1() {
var filename = 'example_photo.png';
var filepath = path.resolve(__dirname, filename);
cos.putObject(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: filename,
Body: fs.readFileSync(filepath),
Headers: {
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 100宽度等比压缩
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "example_photo_ci_result.png", "rule": "imageMogr2/thumbnail/200x/"}]}',
},
onTaskReady: function (tid) {
TaskId = tid;
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* function CIExample2
* @description 对云上数据进行图片处理
*/
function CIExample2() {
var filename = 'example_photo.png';
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Key: filename,
Method: 'POST',
Action: 'image_process',
Headers: {
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200宽度等比压缩
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "example_photo_ci_result.png", "rule": "imageMogr2/thumbnail/200x/"}]}',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* function CIExample3
* @description 下载时使用图片处理
*/
function CIExample3() {
var filepath = path.resolve(__dirname, 'example_photo_ci_result.png');
cos.getObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: 'example_photo.png',
QueryString: 'imageMogr2/thumbnail/200x/',
},
function (err, data) {
if (data) {
fs.writeFileSync(filepath, data.Body);
} else {
console.log(err);
}
},
);
}
/**
* function CIExample4
* @description 生成带图片处理参数的签名 URL
*/
function CIExample4() {
// 生成带图片处理参数的文件签名URL过期时间设置为 30 分钟。
cos.getObjectUrl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: 'photo.png',
QueryString: 'imageMogr2/thumbnail/200x/',
Expires: 1800,
Sign: true,
},
function (err, data) {
console.log(err || data);
},
);
// 生成带图片处理参数的文件URL不带签名。
cos.getObjectUrl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: 'photo.png',
QueryString: 'imageMogr2/thumbnail/200x/',
Sign: false,
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查询已经开通数据万象功能的存储桶
*/
function DescribeCIBuckets() {
var host = 'ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/mediabucket';
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: 'mediabucket' /** 固定值,必须 */,
Url: url,
Query: {
pageNumber: '1' /** 第几页,非必须 */,
pageSize: '10' /** 每页个数,非必须 */,
// regions: 'ap-chengdu', /** 地域信息,例如'ap-beijing',支持多个值用逗号分隔如'ap-shanghai,ap-beijing',非必须 */
// bucketNames: 'test-1250000000', /** 存储桶名称,精确搜索,例如'test-1250000000',支持多个值用逗号分隔如'test1-1250000000,test2-1250000000',非必须 */
// bucketName: 'test', /** 存储桶名称前缀,前缀搜索,例如'test',支持多个值用逗号分隔如'test1,test2',非必须 */
},
},
function (err, data) {
// var CIStatus = data.CIStatus;
console.log(err || data);
},
);
}
/**
* 获取媒体文件信息
*/
function GetMediaInfo() {
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: 'test.mp4',
Query: {
'ci-process': 'videoinfo' /** 固定值,必须 */,
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 获取媒体文件某个时间的截图
*/
function GetSnapshot() {
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: 'test.mp4',
Query: {
'ci-process': 'snapshot' /** 固定值,必须 */,
time: 1 /** 截图的时间点,单位为秒,必须 */,
// width: 0, /** 截图的宽,非必须 */
// height: 0, /** 截图的高,非必须 */
// format: 'jpg', /** 截图的格式,支持 jpg 和 png默认 jpg非必须 */
// rotate: 'auto', /** 图片旋转方式,默认为'auto',非必须 */
// mode: 'exactframe', /** 截帧方式,默认为'exactframe',非必须 */
},
RawBody: true,
},
function (err, data) {
// var Body = data.Body;
console.log(err || data);
},
);
}
/**
* 对多种文件类型生成图片格式或html格式预览
*/
function GetDocProcess() {
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'test.pptx',
Query: {
'ci-process': 'doc-preview',
page: '1',
dstType: 'jpg',
ImageParams:
'imageMogr2/thumbnail/!50p|watermark/2/text/5pWw5o2u5LiH6LGh/fill/I0ZGRkZGRg==/fontsize/30/dx/20/dy/20',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查询文档转码队列
*/
function DescribeDocProcessQueues() {
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/docqueue';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'docqueue',
Url: url,
Query: {
state: 'Active',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 更新文档转码队列
*/
function UpdateDocProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
let queueId = 'p31299c0b3f4742dda2fc1be3ea40xxxx'; // 需要更新的队列ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/docqueue/' + queueId;
let body = {
// 填上队列修改参数
Request: {
Name: '1',
QueueID: queueId,
State: 'Active',
NotifyConfig: {
Url: 'http://your.callkback.address/index.php',
Type: 'Url',
State: 'On',
Event: 'TaskFinish',
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'PUT',
Key: 'docqueue/' + queueId,
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 创建文档转码任务
*/
function CreateDocProcessJobs() {
let queueId = 'p31299c0b3f4742dda2fc1be3ea40xxxx'; // 队列ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/doc_jobs';
let body = {
// 填上任务参数
Request: {
Tag: 'DocProcess',
Input: {
Object: 'test.pptx',
},
QueueId: queueId,
Operation: {
DocProcess: {
StartPage: 3,
EndPage: 4,
TgtType: 'png',
},
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'doc_${Page}.png',
},
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'POST',
Key: 'doc_jobs',
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查询文档转码任务
*/
function DescribeDocProcessJob() {
let jobId = 'd2c6c620a415811ecb31b51515222xxxx';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/doc_jobs/' + jobId;
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'doc_jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 文档转码任务列表
*/
function DescribeDocProcessJobs() {
let queueId = 'p31299c0b3f4742dda2fc1be3ea40xxxx';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/doc_jobs';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'doc_jobs',
Url: url,
Query: {
tag: 'DocProcess',
queueId: queueId,
states: 'Failed',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查询已经开通媒体处理功能的存储桶
*/
function DescribeMediaBuckets() {
let host = 'ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/mediabucket';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'mediabucket',
Url: url,
Query: {
pageNumber: '1',
pageSize: '10',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查询存储桶的媒体处理队列
*/
function DescribeMediaQueues() {
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/queue';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'queue',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 更新媒体处理队列
*/
function UpdateMediaQueue() {
let queueId = 'p5ad1499214024af2bfaa4401d529xxxx'; // 需要更新的队列ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/queue/' + queueId;
let body = {
// 填上队列修改参数
Request: {
Name: '1',
QueueID: queueId,
State: 'Active',
NotifyConfig: {
Url: 'http://your.callkback.address/index.php',
Type: 'Url',
Event: 'TaskFinish',
State: 'On',
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'PUT',
Key: 'queue/' + queueId,
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 创建媒体处理的各种模版以截帧模版为例
*/
function CreateMediaTemplate() {
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/template';
let body = {
// 填上模板参数
Request: {
Tag: 'Snapshot',
Name: 'test-template',
Snapshot: {
Mode: 'Interval',
Start: '1',
TimeInterval: '5',
Count: '3',
Width: '1280',
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'POST',
Key: 'template',
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 删除模版
*/
function DeleteMediaTemplate() {
let templateId = 't1b11b39d3a91949d6804c08399186xxxx'; // 待删除的模版ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/template/' + templateId;
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'DELETE',
Key: 'template/' + templateId,
Url: url,
Headers: {
'content-type': 'application/xml',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查看模版详情
*/
function DescribeMediaTemplates() {
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/template';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'template',
Url: url,
Headers: {
'content-type': 'application/xml',
},
Query: {
tag: 'Snapshot',
name: 'test',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 更新模版信息
*/
function UpdateMediaTemplate() {
let templateId = 't12cf1cde8d8a845eebc0a5c6047bfxxxx'; // 需要更新的模版ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/template/' + templateId;
let body = {
// 填上模版修改参数
Request: {
Tag: 'Snapshot',
Name: 'test-new',
Snapshot: {
Mode: 'Average',
Start: '0',
Count: '3',
Height: '1280',
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'PUT',
Key: 'template/' + templateId,
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 提交媒体处理任务
*/
function CreateMediaJobs() {
let templateId = 't12cf1cde8d8a845eebc0a5c6047bfxxxx'; // 模版ID
let queueId = 'p5ad1499214024af2bfaa4401d529xxxx'; // 队列ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/jobs';
let body = {
// 填上任务参数
Request: {
Tag: 'Snapshot',
Input: {
Object: 'test-input.mp4',
},
QueueId: queueId,
Operation: {
TemplateId: templateId,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'test-output${Number}',
},
},
CallBack: 'http://your.task.callkback.address/index.php',
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'POST',
Key: 'jobs',
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 取消媒体处理任务
*/
function CancelMediaJob() {
let jobId = 'j14596fda409c11eca160977fff35xxxx'; // 待取消的任务ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/jobs/' + jobId;
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'PUT',
Key: 'jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 查看媒体处理任务
*/
function DescribeMediaJob() {
let jobId = 'j14596fda409c11eca160977fff35xxxx'; // 任务ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/jobs/' + jobId;
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 媒体处理任务列表
*/
function DescribeMediaJobs() {
let queueId = 'p5ad1499214024af2bfaa4401d529xxxx'; // 队列ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/jobs';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'jobs',
Url: url,
Query: {
queueId: queueId,
tag: 'Snapshot',
states: 'Failed',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 创建工作流
*/
function CreateWorkflow() {
let queueId = 'p5ad1499214024af2bfaa4401d529xxxx';
let callbackUrl = 'http://your.callback.com/index.php';
let snapshotTemplate = 't0a60a2bc71a4b40c7b3d7f7e8a277xxxx';
let transcodeTemplate = 't04e1ab86554984f1aa17c062fbf6cxxxx';
let animationTemplate = 't0341b0ab2b8a340ff826e9cb4f3a7xxxx';
let concatTemplate = 't19e96c43b0c05444f9b2facc9dcf5xxxx';
let voiceSeparateTemplate = 't1c101e2bc074c4506837714edc99axxxx';
let videoMontageTemplate = 't1ec0b3871d5e340da84536688b810xxxx';
let watermarkTemplate = 't1ea62f7810d0142c195313330bdd4xxxx';
let videoProcessTemplate = 't1d945b6de362f4d4db9bd8659bc5exxxx';
let superResolutionTemplate = 't1d9d5ae4450824427bccc495ed0b0xxxx';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/workflow';
let body = {
Request: {
MediaWorkflow: {
Name: 'demo',
State: 'Active', // 创建并开启工作流
Topology: {
Dependencies: {
Start:
'Snapshot_1581665960536,Transcode_1581665960537,Animation_1581665960538,Concat_1581665960539,VoiceSeparate_1581665960551,VideoMontage_1581665960551,SDRtoHDR_1581665960553,VideoProcess_1581665960554,SuperResolution_1581665960583,Segment_1581665960667',
Snapshot_1581665960536: 'End',
Transcode_1581665960537: 'End',
Animation_1581665960538: 'End',
Concat_1581665960539: 'End',
VideoMontage_1581665960551: 'End',
SDRtoHDR_1581665960553: 'End',
VideoProcess_1581665960554: 'End',
SuperResolution_1581665960583: 'End',
Segment_1581665960667: 'End',
VoiceSeparate_1581665960551: 'End',
},
Nodes: {
Start: {
Type: 'Start',
Input: {
QueueId: queueId,
ObjectPrefix: 'test-',
NotifyConfig: {
Type: 'Url',
Url: callbackUrl,
Event: 'TaskFinish,WorkflowFinish',
},
ExtFilter: {
State: 'On',
Audio: 'true',
Custom: 'true',
CustomExts: 'mp4/mp3',
AllFile: 'false',
},
},
},
Snapshot_1581665960536: {
Type: 'Snapshot',
Operation: {
TemplateId: snapshotTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/snapshot-${number}.${Ext}',
SpriteObject: 'worlflow-test/${RunId}/snapshot-sprite-${number}.jpg',
},
},
},
Transcode_1581665960537: {
Type: 'Transcode',
Operation: {
TemplateId: transcodeTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/trans.mp4',
},
},
},
Animation_1581665960538: {
Type: 'Animation',
Operation: {
TemplateId: animationTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/bcd.gif',
},
},
},
Concat_1581665960539: {
Type: 'Concat',
Operation: {
TemplateId: concatTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/abc.${ext}',
},
},
},
VoiceSeparate_1581665960551: {
Type: 'VoiceSeparate',
Operation: {
TemplateId: voiceSeparateTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/background.mp3',
AuObject: 'worlflow-test/${RunId}/audio.mp3',
},
},
},
VideoMontage_1581665960551: {
Type: 'VideoMontage',
Operation: {
TemplateId: videoMontageTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/montage.mp4',
},
},
},
SDRtoHDR_1581665960553: {
Type: 'SDRtoHDR',
Operation: {
SDRtoHDR: {
HdrMode: 'HLG',
},
TranscodeTemplateId: transcodeTemplate,
WatermarkTemplateId: watermarkTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/SDRtoHDR.mp4',
},
},
},
VideoProcess_1581665960554: {
Type: 'VideoProcess',
Operation: {
TemplateId: videoProcessTemplate,
TranscodeTemplateId: transcodeTemplate,
WatermarkTemplateId: watermarkTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/videoProcess.mp4',
},
},
},
SuperResolution_1581665960583: {
Type: 'SuperResolution',
Operation: {
TemplateId: superResolutionTemplate,
TranscodeTemplateId: transcodeTemplate,
WatermarkTemplateId: watermarkTemplate,
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/SuperResolution.mkv',
},
},
},
Segment_1581665960667: {
Type: 'Segment',
Operation: {
Segment: {
Format: 'mp4',
Duration: '5',
},
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/segment-trans${Number}',
},
},
},
},
},
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'POST',
Key: 'workflow',
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 删除工作流
*/
function DeleteWorkflow() {
let workflowId = 'wad8a9e26e1864a3793446fd9a686xxxx'; // 待删除的工作流ID
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/workflow/' + workflowId;
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'DELETE',
Key: 'workflow/' + workflowId,
Url: url,
Headers: {
'content-type': 'application/xml',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 工作流列表
*/
function DescribeWorkflow() {
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/workflow';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'workflow',
Url: url,
Query: {
ids: '',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 执行实例详情
*/
function DescribeWorkflowExecution() {
let runId = 'ieed8aec4413a11ec913f52540003xxxx';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/workflowexecution/' + runId;
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'workflowexecution/' + runId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 执行实例列表
*/
function DescribeWorkflowExecutions() {
let workflowId = 'w093b29cfef824bd0922743a6f0afxxxx';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/workflowexecution';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'workflowexecution',
Url: url,
Query: {
workflowId: workflowId,
size: '3',
states: 'Failed',
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 更新工作流配置
*/
function UpdateWorkflow() {
let workflowId = 'w14404e66c27b4e0aafae6bc96acfxxxx';
let queueId = 'p5ad1499214024af2bfaa4401d529xxxx';
let callbackUrl = 'http://your.callback.com/index.php';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/workflow/' + workflowId;
let body = {
// 填上模版修改参数
Request: {
MediaWorkflow: {
Name: 'test1',
State: 'Active', // 创建并开启工作流
Topology: {
Dependencies: {
Start: 'SmartCover_1581665960539',
SmartCover_1581665960539: 'End',
},
Nodes: {
Start: {
Type: 'Start',
Input: {
QueueId: queueId,
ObjectPrefix: 'test/',
NotifyConfig: {
Type: 'Url',
Url: callbackUrl,
Event: 'TaskFinish,WorkflowFinish',
},
ExtFilter: {
State: 'On',
Video: 'true',
Custom: 'true',
CustomExts: 'mp4/mp3',
AllFile: 'false',
},
},
},
SmartCover_1581665960539: {
Type: 'SmartCover',
Operation: {
Output: {
Region: config.Region,
Bucket: config.Bucket,
Object: 'worlflow-test/${RunId}/cover-${Number}.jpg',
},
SmartCover: {
Format: 'png',
Width: '128',
Height: '128',
Count: '3',
DeleteDuplicates: 'false',
},
},
},
},
},
},
},
};
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'PUT',
Key: 'workflow/' + workflowId,
Url: url,
Headers: {
'content-type': 'application/xml',
},
Body: json2xml(body),
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 触发工作流
*/
function TriggerWorkflow() {
let workflowId = 'w093b29cfef824bd0922743a6f0afxxxx';
let host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
let url = 'https://' + host + '/triggerworkflow';
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'POST',
Key: 'triggerworkflow',
Url: url,
Headers: {
'content-type': 'application/xml',
},
Query: {
workflowId: workflowId,
object: 'test.mp4',
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 同步审核存储桶里的图片对象
function SyncAuditImageObject() {
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: 'audit/1.jpg',
Method: 'GET',
Query: {
'ci-process': 'sensitive-content-recognition',
// 'detect-url': '<url>',
'biz-type': '', // 审核策略 id
// 'interval': 5, // gif截取间隔帧数
// 'max-frames': 5, // gif最大截帧数
},
},
function (err, data) {
console.log(err || data);
},
);
}
/**
* 获取私有 M3U8 ts 资源的下载授权
*/
function GetPrivateM3U8() {
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Key: 'test.m3u8',
Query: {
'ci-process': 'pm3u8',
expires: '3600',
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 同步审核任意图片 Url
function SyncAuditImageUrl() {
cos.request(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Method: 'GET',
Query: {
'ci-process': 'sensitive-content-recognition',
'detect-url': 'https://ftp.bmp.ovh/imgs/2021/09/ee4e63607465ed8d.jpg',
// 'biz-type': '<type>', // 审核策略 id
// 'interval': 5, // gif截取间隔帧数
// 'max-frames': 5, // gif最大截帧数
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 批量同步审核任意图片 Url
function SyncAuditImageUrls() {
cos.request(
{
Url: `https://${config.Bucket}.ci.${config.Region}.myqcloud.com/image/auditing`,
Method: 'POST',
Headers: {
'content-type': 'application/xml',
},
Body: json2xml({
Request: {
Input: [
{
Object: 'audit/1.jpg',
// DataId: '1', // 审核序号
// Url: '<url>',
// Interval: 5,
// MaxFrames: 5,
},
{
Object: 'audit/2.jpg',
},
],
Conf: {
// Callback: '<url>', // 回调地址
BizType: '', // 审核策略
},
},
}),
},
function (err, data) {
console.log(err || data.Response.JobsDetail);
},
);
}
// 审核文本内容
function SyncAuditTextContent() {
cos.request(
{
Url: `https://${config.Bucket}.ci.${config.Region}.myqcloud.com/text/auditing`,
Method: 'POST',
Headers: {
'content-type': 'application/xml',
},
Body: json2xml({
Request: {
Input: {
Content: Buffer.from('高潮').toString('base64'),
},
Conf: {
// Callback: '<url>', // 回调地址
BizType: '', // 审核策略
},
},
}),
},
function (err, data) {
console.log(err || data.Response.JobsDetail);
},
);
}
// 提交图片审核任务
function CreateAuditJob() {
var objectKey = 'audit/1.jpg';
var objectType = 'image'; // image/audio/video/text/document
cos.request(
{
Url: `https://${config.Bucket}.ci.${config.Region}.myqcloud.com/${objectType}/auditing`,
Method: 'POST',
Headers: {
'content-type': 'application/xml',
},
Body: json2xml({
Request: {
Input: {
Object: objectKey,
},
Conf: {
// Callback: '<url>', // 回调地址
BizType: '', // 审核策略
},
},
}),
},
function (err, data) {
console.log(err || data.Response.JobsDetail);
},
);
}
// 查询审核任务结果
function DescribeAuditJob() {
var jobId = 'st3bb560af647911ec919652540024deb5';
cos.request(
{
Url: `https://${config.Bucket}.ci.${config.Region}.myqcloud.com/text/auditing/${jobId}`,
Method: 'GET',
},
function (err, data) {
console.log(err || data.Response.JobsDetail);
},
);
}
// 提交直播审核任务
function postLiveAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing';
var body = COS.util.json2xml({
Request: {
Type: 'live_video',
Input: {
Url: 'rtmp://example.com/live/123', // 需要审核的直播流播放地址
// DataId: '',
// UserInfo: {},
},
Conf: {
BizType: '766d07a7af937c26216c51db29793ea6',
// Callback: 'https://callback.com', // 回调地址,非必须
// CallbackType: 1, // 回调片段类型,非必须
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/video/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询直播审核任务结果
function getLiveAuditingResult() {
var jobId = 'av99005f3ebd8911edb05a52540084c07b'; // jobId可以通过提交直播审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/video/auditing/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交病毒检测任务
function postVirusDetect() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Input: {
Object: 'test/1.png', // 文件名取值为文件在当前存储桶中的完整名称与Url参数二选一
// Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/virus.doc', // 病毒文件的链接地址与Object参数二选一
},
Conf: {
DetectType: 'Virus', // 检测的病毒类型当前固定为Virus
// CallBack: 'http://callback.demo.com', // 任务回调的地址
},
},
});
cos.request(
{
Method: 'POST',
Key: 'virus/detect',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询病毒检测任务结果
function getVirusDetectResult() {
var jobId = 'ssc6df8d13bd8911ed904c525400941127'; // 提交病毒检测任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect/' + jobId;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'virus/detect/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交音频降噪任务
function postNoiseReduction() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'NoiseReduction',
Input: {
Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out.mp3', // 输出的文件Key
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
cos.request(
{
Method: 'POST',
Key: 'jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交人声分离任务
function postVoiceSeparate() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'VoiceSeparate',
Input: {
Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
// VoiceSeparate: {}, // 指定转码模板参数,非必须
TemplateId: 't13fca82ad97e84878a22cd81bd2e5652c', // 指定的模板 ID必须
// JobLevel: 0, // 任务优先级级别限制0 、1 、2。级别越大任务优先级越高默认为0非必须
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out/background.mp3', // 输出的文件Key,背景音结果文件名,不能与 AuObject 同时为空
AuObject: 'ci/out/audio.mp3',
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
cos.request(
{
Method: 'POST',
Key: 'jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交语音合成任务
function postTts() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'Tts',
Operation: {
// VoiceSeparate: {}, // 指定转码模板参数,非必须
TemplateId: 't192931b3564084168a3f50ebfea59acb3', // 指定的模板 ID必须
// JobLevel: 0, // 任务优先级级别限制0 、1 、2。级别越大任务优先级越高默认为0非必须
TtsConfig: {
InputType: 'Text',
Input: '床前明月光,疑是地上霜',
},
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out/tts.mp3', // 输出的文件Key
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
cos.request(
{
Method: 'POST',
Key: 'jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交语音识别任务
function postSpeechRecognition() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asr_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'SpeechRecognition',
Input: {
Object: 'ci/music.mp3', // 文件名取值为文件在当前存储桶中的完整名称与Url参数二选一
// Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/music.mp3', // 病毒文件的链接地址与Object参数二选一
},
Operation: {
SpeechRecognition: {
EngineModelType: '16k_zh_video', // 引擎模型类型
ChannelNum: 1, // 语音声道数
ResTextFormat: 0, // 识别结果返回形式
FilterDirty: 1, // 是否过滤脏词(目前支持中文普通话引擎)
FilterModal: 1, // 是否过语气词(目前支持中文普通话引擎)
ConvertNumMode: 0, // 是否进行阿拉伯数字智能转换(目前支持中文普通话引擎)
},
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out/SpeechRecognition.mp3', // 输出的文件Key
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
cos.request(
{
Method: 'POST',
Key: 'asr_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询语音识别队列
function getAsrQueue() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'asrqueue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
// state: '', /* 非必须1=Active,2=Paused */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 2, /* 非必须,每页个数 */
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 更新语音识别队列
function putAsrQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'pcc77499e85c311edb9865254008618d9';
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'queue-doc-process-1',
QueueID: queueId,
State: 'Paused',
NotifyConfig: {
// Url: '',
// Type: 'Url',
// Event: '',
State: 'Off',
},
},
});
cos.request(
{
Method: 'PUT',
Key: 'asrqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询语音识别开通状态
function getAsrBucket() {
var host = 'ci.' + config.Region + '.myqcloud.com/asrbucket';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'asrbucket',
Url: url,
Query: {
// regions: '', /* 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing */
// bucketNames: '', /* 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索 */
// bucketName: '', /* 非必须,存储桶名称前缀,前缀搜索 */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 10, /* 非必须,每页个数 */
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 设置防盗链
function setRefer() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
var url = 'https://' + host;
var body = COS.util.json2xml({
Hotlink: {
Url: 'https://www.example.com', // 必须,域名地址
Type: 'white', // 必须防盗链类型white 为白名单black 为黑名单off 为关闭。
},
});
cos.request(
{
Method: 'PUT',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询防盗链
function describeRefer() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 开通原图保护
function openOriginProtect() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
var url = 'https://' + host;
cos.request(
{
Method: 'PUT',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询原图保护状态
function describeOriginProtect() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 关闭原图保护
function closeOriginProtect() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
var url = 'https://' + host;
cos.request(
{
Method: 'DELETE',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 图片样式 - 增加样式
function addImageStyle() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
var url = 'https://' + host;
var body = COS.util.json2xml({
AddStyle: {
StyleName: 'style_name1', // 必须,样式名称
StyleBody: 'imageMogr2/thumbnail/!50px', // 必须,样式详情
},
});
cos.request(
{
Method: 'PUT',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 图片样式 - 查询样式
function describeImageStyles() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Url: url,
Query: {
// "style-name": 'style_name', // 非必填,样式名称
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 图片样式 - 删除样式
function deleteImageStyle() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
var url = 'https://' + host;
var body = COS.util.json2xml({
DeleteStyle: {
StyleName: 'style_name1', // 必须,样式名称
},
});
cos.request(
{
Method: 'DELETE',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 开通 Guetzli 压缩
function openImageGuetzli() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
var url = 'https://' + host;
cos.request(
{
Method: 'PUT',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询 Guetzli 状态
function describeImageGuetzli() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 关闭 Guetzli 压缩
function closeImageGuetzli() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
var url = 'https://' + host;
cos.request(
{
Method: 'DELETE',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 上传时使用图片压缩
function advanceCompressExample1() {
var filename = 'example_photo.png';
var filepath = path.resolve(__dirname, filename);
cos.putObject(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: filename,
Body: fs.readFileSync(filepath),
Headers: {
// 通过 imageMogr2 接口进行 avif 压缩可以根据需要压缩的类型填入不同的压缩格式webp/heif/tpg/avif/svgc
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.avif", "rule": "imageMogr2/format/webp"}]}',
},
onTaskReady: function (tid) {
TaskId = tid;
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 对云上数据进行图片压缩
function advanceCompressExample2() {
var filename = 'example_photo.png';
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Key: filename,
Method: 'POST',
Action: 'image_process',
Headers: {
// 通过 imageMogr2 接口进行 avif 压缩可以根据需要压缩的类型填入不同的压缩格式webp/heif/tpg/avif/svgc
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.avif", "rule": "imageMogr2/format/avif"}]}',
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 下载时使用图片压缩
function advanceCompressExample3() {
var filepath = path.resolve(__dirname, 'example_photo_ci_result.avif');
cos.getObject(
{
Bucket: config.Bucket,
Region: config.Region,
Key: 'example_photo.png',
QueryString: `imageMogr2/format/avif`, // 可以根据需要压缩的类型填入不同的压缩格式webp/heif/tpg/avif/svgc
},
function (err, data) {
if (data) {
fs.writeFileSync(filepath, data.Body);
} else {
console.log(err);
}
},
);
}
// 异常图片检测
function createImageInspectJob() {
var key = '1.png';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
RawBody: true,
Query: {
'ci-process': 'ImageInspect' /* 必须操作类型异常图片检测固定为ImageInspect */,
},
},
function (err, data) {
// 从响应数据中解析出异常图片检测结果
let body = {};
if (data && data.Body) {
body = JSON.parse(data.Body) || {};
if (body) {
data.body = body;
}
}
console.log(err || data);
},
);
}
// 更新图片处理队列
function updatePicProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'p36e92002ff5b418497076f31d33d4xxx';
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/picqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'My-Queue-Pic', // 必须,队列名称,长度不超过128
State: 'Active', // 必须Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
NotifyConfig: {
// 必须,回调配置
State: 'On', // 必须回调开关Off/On默认Off
Event: 'TaskFinish', // 回调事件,当 State=On时, 必选。任务完成TaskFinish工作流完成WorkflowFinish
ResultFormat: 'XML', // 非必选回调格式JSON/XML
Type: 'Url', // 回调类型,当 State=On时, 必选Url 或 TDMQ
Url: 'https://www.example.com', // 回调地址,当 State=On, 且Type=Url时, 必选
// MqMode: 'Off', // TDMQ 使用模式,当 State=On, 且Type=TDMQ时, 必选
// MqRegion: 'Off', // TDMQ 所属地域,当 State=On, 且Type=TDMQ时, 必选
// MqName: 'Off', // TDMQ 主题名称,当 State=On, 且Type=TDMQ时, 必选
},
},
});
cos.request(
{
Method: 'POST',
Key: 'picqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询图片处理队列
function describePicProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/picqueue';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'picqueue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
state:
'Active' /* 非必须1. Active 表示队列内的作业会被媒体处理服务调度执行。2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。 */,
pageNumber: 1 /* 非必须,第几页,默认值1 */,
pageSize: 10 /* 非必须,每页个数,默认值10 */,
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询已经开通文档预览的存储桶
function describeDocProcessBuckets() {
var host = 'ci.' + config.Region + '.myqcloud.com/docbucket';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'docbucket',
Url: url,
Query: {
// regions: '', /* 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing */
// bucketNames: '', /* 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索 */
// bucketName: '', /* 非必须,存储桶名称前缀,前缀搜索 */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 10, /* 非必须,每页个数 */
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 文档预览功能同步请求
function previewDocumentAsync() {
var key = 'test.docx';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
Query: {
ObjectKey: key /* 对象文件名 */,
'ci-process': 'doc-preview' /* 必须,数据万象处理能力,文档预览固定为 doc-preview */,
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交文档转码任务
function createDocProcessJobs() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'DocProcess',
Input: {
Object: 'test.docx', // 存在cos里的路径
},
Operation: {
DocProcess: {
TgtType: 'jpg',
},
Output: {
Bucket: config.Bucket,
Region: config.Region,
Object: '1/文档转码_${Number}.jpg', // 转码后存到cos的路径
},
},
},
});
cos.request(
{
Method: 'POST',
Key: 'doc_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询指定的文档预览任务
function describeDocProcessJob() {
var jobId = 'd622ab912ebdb11ed9baf0316d5139xxx'; // 替换成自己的jogId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs/' + jobId;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'doc_jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 拉取符合条件的文档预览任务
function describeDocProcessJobs() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'doc_jobs',
Url: url,
Query: {
tag: 'DocProcess',
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 更新文档预览队列
function updateDocProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'p58639252a2cf45aba7a7f3335ffe3xxx'; // 替换成自己的队列id
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'queue-doc-process-1', // 替换成自己的队列name
QueueID: queueId,
State: 'Active',
NotifyConfig: {
State: 'Off',
},
},
});
cos.request(
{
Method: 'PUT',
Key: 'docqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询文档转码队列
function describeDocProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'docqueue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
// state: '', /* 非必须1=Active,2=Paused */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 2, /* 非必须,每页个数 */
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 文档转 HTML
function getDocHtmlUrl() {
cos.getObjectUrl(
{
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: 'test.docx',
Query: {
'ci-process': 'doc-preview' /* 必须,数据万象处理能力,文档预览固定为 doc-preview */,
// srcType: '', /* 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值 */
// page: '', /* 非必须需转换的文档页码默认从1开始计数表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图 */
dstType: 'html' /* 非必须,转换输出目标文件类型 */,
},
},
function (err, data) {
if (err) {
console.log(err);
} else {
// 使用浏览器打开url即可预览
var url = data.Url;
console.log(url);
}
},
);
}
// 获取在线文档预览地址
function getDocHtmlPreviewUrl() {
var key = 'test.docx';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
RawBody: true,
Query: {
'ci-process': 'doc-preview' /* 必须,预览固定参数,值为 doc-preview */,
dstType: 'html' /* 必须,预览类型,如需预览生成类型为 html 则填入 html */,
weboffice_url: 1 /* 非必须是否获取预览链接。填入值为1会返回预览链接和Token信息填入值为2只返回Token信息不传会直接预览 */,
},
},
function (err, data) {
// 从响应数据中解析出在线文档预览地址
let body = {};
if (data && data.Body) {
body = JSON.parse(data.Body) || {};
}
if (body && body.PreviewUrl) {
data.PreviewUrl = body.PreviewUrl;
}
console.log(err || data);
},
);
}
// 开通文件处理服务
function createFileProcessBucket() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_bucket';
var url = 'https://' + host;
cos.request(
{
Method: 'POST',
Key: 'file_bucket',
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 更新文件处理队列
function updateFileProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'p5d0dc85debe149febdd6fd9b208aaxxx';
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'My-Queue-file', // 必须,队列名称,长度不超过128
State: 'Active', // 必须Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
NotifyConfig: {
// 必须,回调配置
State: 'On', // 必须回调开关Off/On默认Off
Event: 'TaskFinish', // 回调事件,当 State=On时, 必选。任务完成TaskFinish工作流完成WorkflowFinish
ResultFormat: 'XML', // 非必选回调格式JSON/XML
Type: 'Url', // 回调类型,当 State=On时, 必选Url 或 TDMQ
Url: 'https://www.example.com', // 回调地址,当 State=On, 且Type=Url时, 必选
// MqMode: 'Off', // TDMQ 使用模式,当 State=On, 且Type=TDMQ时, 必选
// MqRegion: 'Off', // TDMQ 所属地域,当 State=On, 且Type=TDMQ时, 必选
// MqName: 'Off', // TDMQ 主题名称,当 State=On, 且Type=TDMQ时, 必选
},
},
});
cos.request(
{
Method: 'POST',
Key: 'file_queue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询文件处理队列
function describeFileProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'file_queue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
state:
'Active' /* 非必须Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。 */,
pageNumber: 1 /* 第几页,默认值1 */,
pageSize: 10 /* 非必须,每页个数,默认值10 */,
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 哈希值计算同步请求
function generateFileHash() {
var key = 'test.docx';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
Query: {
'ci-process': 'filehash' /* 必须操作类型哈希值计算固定为filehash */,
type: 'md5' /* 必须支持的哈希算法类型有效值md5、sha1、sha256 */,
// 'addtoheader': false, /* 非必须是否将计算得到的哈希值自动添加至文件的自定义header格式为x-cos-meta-md5/sha1/sha256;有效值true、false不填则默认为false。 */
},
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交哈希值计算任务
function postFileHashTask() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'FileHashCode', // 必须
Input: {
Object: 'test.docx', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
FileHashCodeConfig: {
Type: 'MD5', // 哈希值的算法类型有效值MD5、SHA1、SHA256
AddToHeader: 'false', // 是否将计算得到的哈希值添加至文件自定义header, 有效值true、false默认值为 false。
},
// UserData: '', // 透传用户信息, 可打印的 ASCII 码, 长度不超过1024
},
// QueueId: '', // 任务所在的队列 ID
// CallBack: 'http://callback.demo.com', // 任务回调的地址
// CallBackFormat: 'JSON', // 任务回调格式
// CallBackType: 'Url', // 任务回调类型Url 或 TDMQ默认 Url
},
});
cos.request(
{
Method: 'POST',
Key: 'file_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询哈希值计算任务结果
function getFileHashTask() {
var jobId = 'f99ca3336ebde11ed96313ffa040a7xxx'; // 提交文件哈希值计算任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'file_jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交文件解压任务
function postFileUnCompressTask() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'FileUncompress', // 必须
Input: {
Object: 'testCompress/compressed.zip', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
FileUncompressConfig: {
Prefix: 'testCompress', // 指定解压后输出文件的前缀,不填则默认保存在存储桶根路径
PrefixReplaced: '0', // 指定解压后的文件路径是否需要替换前缀,默认0
},
Output: {
Bucket: config.Bucket, // 保存解压后文件的存储桶
Region: config.Region, // 保存解压后文件的存储桶地域
},
},
// QueueId: '', // 任务所在的队列 ID
// CallBack: 'http://callback.demo.com', // 任务回调的地址
// CallBackFormat: 'JSON', // 任务回调格式
// CallBackType: 'Url', // 任务回调类型Url 或 TDMQ默认 Url
},
});
cos.request(
{
Method: 'POST',
Key: 'file_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询文件解压任务结果
function getFileUnCompressTask() {
var jobId = 'f52028b26ebe211edae4c1b36c787axxx'; // 提交文件解压任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'file_jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交文件压缩任务
function postFileCompressTask() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'FileCompress', // 必须
Operation: {
FileCompressConfig: {
Flatten: '0', // 文件打包时,是否需要去除源文件已有的目录结构.0:不需要;1:需要
Format: 'zip', // 打包压缩的类型有效值zip、tar、tar.gz
// UrlList、Prefix、Key 三者仅能选择一个,不能都为空,也不会同时生效
// UrlList: '', // 索引文件的对象地址
Prefix: '/', // 目录前缀
Key: [''], // 支持对存储桶中的多个文件进行打包,个数不能超过 1000, 总大小不超过50G否则会导致任务失败
},
Output: {
Bucket: config.Bucket, // 保存压缩后文件的存储桶
Region: config.Region, // 保存压缩后文件的存储桶地域
Object: 'testCompress/compressed.zip', // 压缩后文件的文件名
},
UserData: '',
},
// QueueId: '', // 任务所在的队列 ID
// CallBack: 'http://callback.demo.com', // 任务回调的地址
// CallBackFormat: 'JSON', // 任务回调格式
// CallBackType: 'Url', // 任务回调类型Url 或 TDMQ默认 Url
},
});
cos.request(
{
Method: 'POST',
Key: 'file_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
console.log(err || data);
},
);
}
// 查询文件压缩任务结果
function getFileCompressTask() {
var jobId = 'fc3c90292ebdf11eda4be2be811d77xxx'; // 提交文件压缩任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'file_jobs/' + jobId,
Url: url,
},
function (err, data) {
console.log(err || data);
},
);
}
// 提交直播审核任务
function postLiveAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing';
var body = COS.util.json2xml({
Request: {
Type: 'live_video',
Input: {
Url: 'rtmp://example.com/live/123', // 需要审核的直播流播放地址
// DataId: '',
// UserInfo: {},
},
Conf: {
BizType: '766d07a7af937c26216c51db29793ea6',
// Callback: 'https://callback.com', // 回调地址,非必须
// CallbackType: 1, // 回调片段类型,非必须
}
}
});
cos.request({
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/video/auditing',
ContentType: 'application/xml',
Body: body
},
function(err, data){
console.log(err || data);
});
}
// 查询直播审核任务结果
function getLiveAuditingResult() {
var jobId = 'av99005f3ebd8911edb05a52540084c07b'; // jobId可以通过提交直播审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing/' + jobId;
cos.request({
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/video/auditing/' + jobId,
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 提交病毒检测任务
function postVirusDetect() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Input: {
Object: 'test/1.png', // 文件名取值为文件在当前存储桶中的完整名称与Url参数二选一
// Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/virus.doc', // 病毒文件的链接地址与Object参数二选一
},
Conf: {
DetectType: 'Virus', // 检测的病毒类型当前固定为Virus
// CallBack: 'http://callback.demo.com', // 任务回调的地址
},
}
});
cos.request({
Method: 'POST',
Key: 'virus/detect',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询病毒检测任务结果
function getVirusDetectResult() {
var jobId = 'ssc6df8d13bd8911ed904c525400941127'; // 提交病毒检测任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect/' + jobId;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'virus/detect/' + jobId,
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 提交音频降噪任务
function postNoiseReduction() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'NoiseReduction',
Input: {
Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out.mp3', // 输出的文件Key
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
}
});
cos.request({
Method: 'POST',
Key: 'jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 提交人声分离任务
function postVoiceSeparate() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'VoiceSeparate',
Input: {
Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
// VoiceSeparate: {}, // 指定转码模板参数,非必须
TemplateId: 't13fca82ad97e84878a22cd81bd2e5652c', // 指定的模板 ID必须
// JobLevel: 0, // 任务优先级级别限制0 、1 、2。级别越大任务优先级越高默认为0非必须
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out/background.mp3', // 输出的文件Key,背景音结果文件名,不能与 AuObject 同时为空
AuObject: 'ci/out/audio.mp3',
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
}
});
cos.request({
Method: 'POST',
Key: 'jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 提交语音合成任务
function postTts() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'Tts',
Operation: {
// VoiceSeparate: {}, // 指定转码模板参数,非必须
TemplateId: 't192931b3564084168a3f50ebfea59acb3', // 指定的模板 ID必须
// JobLevel: 0, // 任务优先级级别限制0 、1 、2。级别越大任务优先级越高默认为0非必须
TtsConfig: {
InputType: 'Text',
Input: '床前明月光,疑是地上霜',
},
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out/tts.mp3', // 输出的文件Key
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
}
});
cos.request({
Method: 'POST',
Key: 'jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 提交语音识别任务
function postSpeechRecognition() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asr_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'SpeechRecognition',
Input: {
Object: 'ci/music.mp3', // 文件名取值为文件在当前存储桶中的完整名称与Url参数二选一
// Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/music.mp3', // 病毒文件的链接地址与Object参数二选一
},
Operation: {
SpeechRecognition: {
EngineModelType: '16k_zh_video', // 引擎模型类型
ChannelNum: 1, // 语音声道数
ResTextFormat: 0, // 识别结果返回形式
FilterDirty: 1, // 是否过滤脏词(目前支持中文普通话引擎)
FilterModal: 1, // 是否过语气词(目前支持中文普通话引擎)
ConvertNumMode: 0, // 是否进行阿拉伯数字智能转换(目前支持中文普通话引擎)
},
Output: {
Bucket: config.Bucket, // 输出的存储桶
Region: config.Region, // 输出的存储桶的地域
Object: 'ci/out/SpeechRecognition.mp3', // 输出的文件Key
},
},
// QueueId: '', // 任务所在的队列 ID非必须
// CallBackFormat: '', // 任务回调格式JSON 或 XML默认 XML优先级高于队列的回调格式非必须
// CallBackType: '', // 任务回调类型Url 或 TDMQ默认 Url优先级高于队列的回调类型非必须
// CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
}
});
cos.request({
Method: 'POST',
Key: 'asr_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询语音识别队列
function getAsrQueue() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'asrqueue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
// state: '', /* 非必须1=Active,2=Paused */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 2, /* 非必须,每页个数 */
},
},
function(err, data){
console.log(err || data);
});
}
// 更新语音识别队列
function putAsrQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'pcc77499e85c311edb9865254008618d9';
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'queue-doc-process-1',
QueueID: queueId,
State: 'Paused',
NotifyConfig: {
// Url: '',
// Type: 'Url',
// Event: '',
State: 'Off',
},
}
});
cos.request({
Method: 'PUT',
Key: 'asrqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询语音识别开通状态
function getAsrBucket() {
var host = 'ci.' + config.Region + '.myqcloud.com/asrbucket';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'asrbucket',
Url: url,
Query: {
// regions: '', /* 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing */
// bucketNames: '', /* 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索 */
// bucketName: '', /* 非必须,存储桶名称前缀,前缀搜索 */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 10, /* 非必须,每页个数 */
},
},
function(err, data){
console.log(err || data);
});
}
// 设置防盗链
function setRefer() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
var url = 'https://' + host;
var body = COS.util.json2xml({
Hotlink: {
Url: 'https://www.example.com', // 必须,域名地址
Type: 'white', // 必须防盗链类型white 为白名单black 为黑名单off 为关闭。
}
});
cos.request({
Method: 'PUT',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询防盗链
function describeRefer() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 开通原图保护
function openOriginProtect() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
var url = 'https://' + host;
cos.request({
Method: 'PUT',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 查询原图保护状态
function describeOriginProtect() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 关闭原图保护
function closeOriginProtect() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
var url = 'https://' + host;
cos.request({
Method: 'DELETE',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 图片样式 - 增加样式
function addImageStyle() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
var url = 'https://' + host;
var body = COS.util.json2xml({
AddStyle: {
StyleName: 'style_name1', // 必须,样式名称
StyleBody: 'imageMogr2/thumbnail/!50px', // 必须,样式详情
}
});
cos.request({
Method: 'PUT',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 图片样式 - 查询样式
function describeImageStyles() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Url: url,
Query: {
// "style-name": 'style_name', // 非必填,样式名称
},
},
function(err, data){
console.log(err || data);
});
}
// 图片样式 - 删除样式
function deleteImageStyle() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
var url = 'https://' + host;
var body = COS.util.json2xml({
DeleteStyle: {
StyleName: 'style_name1', // 必须,样式名称
}
});
cos.request({
Method: 'DELETE',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 开通 Guetzli 压缩
function openImageGuetzli() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
var url = 'https://' + host;
cos.request({
Method: 'PUT',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 查询 Guetzli 状态
function describeImageGuetzli() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 关闭 Guetzli 压缩
function closeImageGuetzli() {
var host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
var url = 'https://' + host;
cos.request({
Method: 'DELETE',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 上传时使用图片压缩
function advanceCompressExample1(){
var filename = 'example_photo.png'
var filepath = path.resolve(__dirname, filename);
cos.putObject({
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: filename,
Body: fs.readFileSync(filepath),
Headers: {
// 通过 imageMogr2 接口进行 avif 压缩可以根据需要压缩的类型填入不同的压缩格式webp/heif/tpg/avif/svgc
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.avif", "rule": "imageMogr2/format/webp"}]}',
},
onTaskReady: function (tid) {
TaskId = tid;
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
}, function (err, data) {
console.log(err || data);
});
}
// 对云上数据进行图片压缩
function advanceCompressExample2(){
var filename = 'example_photo.png';
cos.request({
Bucket: config.Bucket,
Region: config.Region,
Key: filename,
Method: 'POST',
Action: 'image_process',
Headers: {
// 通过 imageMogr2 接口进行 avif 压缩可以根据需要压缩的类型填入不同的压缩格式webp/heif/tpg/avif/svgc
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.avif", "rule": "imageMogr2/format/avif"}]}',
},
}, function (err, data) {
console.log(err || data);
});
}
// 下载时使用图片压缩
function advanceCompressExample3(){
var filepath = path.resolve(__dirname, 'example_photo_ci_result.avif');
cos.getObject({
Bucket: config.Bucket,
Region: config.Region,
Key: 'example_photo.png',
QueryString: `imageMogr2/format/avif`, // 可以根据需要压缩的类型填入不同的压缩格式webp/heif/tpg/avif/svgc
},
function (err, data) {
if(data){
fs.writeFileSync(filepath, data.Body);
} else {
console.log(err);
}
},
);
}
// 异常图片检测
function createImageInspectJob() {
var key = '1.png';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: key,
Url: url,
RawBody: true,
Query: {
'ci-process': 'ImageInspect', /* 必须操作类型异常图片检测固定为ImageInspect */
},
},
function(err, data){
// 从响应数据中解析出异常图片检测结果
let body = {};
if (data && data.Body) {
body = JSON.parse(data.Body) || {};
if(body) {
data.body = body;
}
}
console.log(err || data);
});
}
// 更新图片处理队列
function updatePicProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'p36e92002ff5b418497076f31d33d4xxx';
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/picqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'My-Queue-Pic', // 必须,队列名称,长度不超过128
State: 'Active', // 必须Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
NotifyConfig: { // 必须,回调配置
State: 'On', // 必须回调开关Off/On默认Off
Event: 'TaskFinish', // 回调事件,当 State=On时, 必选。任务完成TaskFinish工作流完成WorkflowFinish
ResultFormat: 'XML', // 非必选回调格式JSON/XML
Type: 'Url', // 回调类型,当 State=On时, 必选Url 或 TDMQ
Url: 'https://www.example.com', // 回调地址,当 State=On, 且Type=Url时, 必选
// MqMode: 'Off', // TDMQ 使用模式,当 State=On, 且Type=TDMQ时, 必选
// MqRegion: 'Off', // TDMQ 所属地域,当 State=On, 且Type=TDMQ时, 必选
// MqName: 'Off', // TDMQ 主题名称,当 State=On, 且Type=TDMQ时, 必选
}
}
});
cos.request({
Method: 'POST',
Key: 'picqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询图片处理队列
function describePicProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/picqueue';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'picqueue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
state: 'Active', /* 非必须1. Active 表示队列内的作业会被媒体处理服务调度执行。2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。 */
pageNumber: 1, /* 非必须,第几页,默认值1 */
pageSize: 10, /* 非必须,每页个数,默认值10 */
},
},
function(err, data){
console.log(err || data);
});
}
// 查询已经开通文档预览的存储桶
function describeDocProcessBuckets() {
var host = 'ci.' + config.Region + '.myqcloud.com/docbucket';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'docbucket',
Url: url,
Query: {
// regions: '', /* 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing */
// bucketNames: '', /* 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索 */
// bucketName: '', /* 非必须,存储桶名称前缀,前缀搜索 */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 10, /* 非必须,每页个数 */
},
},
function(err, data){
console.log(err || data);
});
}
// 文档预览功能同步请求
function previewDocumentAsync() {
var key = 'test.docx';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: key,
Url: url,
Query: {
ObjectKey: key, /* 对象文件名 */
'ci-process': 'doc-preview', /* 必须,数据万象处理能力,文档预览固定为 doc-preview */
},
},
function(err, data){
console.log(err || data);
});
}
// 提交文档转码任务
function createDocProcessJobs() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'DocProcess',
Input: {
Object: 'test.docx', // 存在cos里的路径
},
Operation: {
DocProcess: {
TgtType: 'jpg',
},
Output: {
Bucket: config.Bucket,
Region: config.Region,
Object: '1/文档转码_${Number}.jpg', // 转码后存到cos的路径
},
},
}
});
cos.request({
Method: 'POST',
Key: 'doc_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询指定的文档预览任务
function describeDocProcessJob() {
var jobId = 'd622ab912ebdb11ed9baf0316d5139xxx'; // 替换成自己的jogId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs/' + jobId;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'doc_jobs/' + jobId,
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 拉取符合条件的文档预览任务
function describeDocProcessJobs() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'doc_jobs',
Url: url,
Query: {
tag: 'DocProcess',
},
},
function(err, data){
console.log(err || data);
});
}
// 更新文档预览队列
function updateDocProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'p58639252a2cf45aba7a7f3335ffe3xxx'; // 替换成自己的队列id
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'queue-doc-process-1', // 替换成自己的队列name
QueueID: queueId,
State: 'Active',
NotifyConfig: {
State: 'Off',
}
}
});
cos.request({
Method: 'PUT',
Key: 'docqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询文档转码队列
function describeDocProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'docqueue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
// state: '', /* 非必须1=Active,2=Paused */
// pageNumber: 1, /* 非必须,第几页 */
// pageSize: 2, /* 非必须,每页个数 */
},
},
function(err, data){
console.log(err || data);
});
}
// 文档转 HTML
function getDocHtmlUrl() {
cos.getObjectUrl({
Bucket: config.Bucket, // Bucket 格式test-1250000000
Region: config.Region,
Key: 'test.docx',
Query: {
'ci-process': 'doc-preview', /* 必须,数据万象处理能力,文档预览固定为 doc-preview */
// srcType: '', /* 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值 */
// page: '', /* 非必须需转换的文档页码默认从1开始计数表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图 */
dstType: 'html', /* 非必须,转换输出目标文件类型 */
},
}, function(err, data) {
if (err) {
console.log(err);
} else {
// 使用浏览器打开url即可预览
var url = data.Url;
console.log(url);
}
});
}
// 获取在线文档预览地址
function getDocHtmlPreviewUrl() {
var key = 'test.docx';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: key,
Url: url,
RawBody: true,
Query: {
'ci-process': 'doc-preview', /* 必须,预览固定参数,值为 doc-preview */
'dstType': 'html', /* 必须,预览类型,如需预览生成类型为 html 则填入 html */
'weboffice_url': 1, /* 非必须是否获取预览链接。填入值为1会返回预览链接和Token信息填入值为2只返回Token信息不传会直接预览 */
},
},
function(err, data){
// 从响应数据中解析出在线文档预览地址
let body = {};
if (data && data.Body) {
body = JSON.parse(data.Body) || {};
}
if(body && body.PreviewUrl) {
data.PreviewUrl = body.PreviewUrl;
}
console.log(err || data);
});
}
// 开通文件处理服务
function createFileProcessBucket() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_bucket';
var url = 'https://' + host;
cos.request({
Method: 'POST',
Key: 'file_bucket',
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 更新文件处理队列
function updateFileProcessQueue() {
// 任务所在的队列 ID请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'p5d0dc85debe149febdd6fd9b208aaxxx';
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'My-Queue-file', // 必须,队列名称,长度不超过128
State: 'Active', // 必须Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
NotifyConfig: { // 必须,回调配置
State: 'On', // 必须回调开关Off/On默认Off
Event: 'TaskFinish', // 回调事件,当 State=On时, 必选。任务完成TaskFinish工作流完成WorkflowFinish
ResultFormat: 'XML', // 非必选回调格式JSON/XML
Type: 'Url', // 回调类型,当 State=On时, 必选Url 或 TDMQ
Url: 'https://www.example.com', // 回调地址,当 State=On, 且Type=Url时, 必选
// MqMode: 'Off', // TDMQ 使用模式,当 State=On, 且Type=TDMQ时, 必选
// MqRegion: 'Off', // TDMQ 所属地域,当 State=On, 且Type=TDMQ时, 必选
// MqName: 'Off', // TDMQ 主题名称,当 State=On, 且Type=TDMQ时, 必选
}
}
});
cos.request({
Method: 'POST',
Key: 'file_queue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询文件处理队列
function describeFileProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue';
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'file_queue',
Url: url,
Query: {
// queueIds: '', /* 非必须,队列 ID以“,”符号分割字符串 */
state: 'Active', /* 非必须Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。 */
pageNumber: 1, /* 第几页,默认值1 */
pageSize: 10, /* 非必须,每页个数,默认值10 */
},
},
function(err, data){
console.log(err || data);
});
}
// 哈希值计算同步请求
function generateFileHash() {
var key = 'test.docx';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: key,
Url: url,
Query: {
'ci-process': 'filehash', /* 必须操作类型哈希值计算固定为filehash */
'type': 'md5', /* 必须支持的哈希算法类型有效值md5、sha1、sha256 */
// 'addtoheader': false, /* 非必须是否将计算得到的哈希值自动添加至文件的自定义header格式为x-cos-meta-md5/sha1/sha256;有效值true、false不填则默认为false。 */
},
},
function(err, data){
console.log(err || data);
});
}
// 提交哈希值计算任务
function postFileHashTask() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'FileHashCode', // 必须
Input: {
Object: 'test.docx', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
FileHashCodeConfig: {
Type: 'MD5', // 哈希值的算法类型有效值MD5、SHA1、SHA256
AddToHeader: 'false', // 是否将计算得到的哈希值添加至文件自定义header, 有效值true、false默认值为 false。
},
// UserData: '', // 透传用户信息, 可打印的 ASCII 码, 长度不超过1024
},
// QueueId: '', // 任务所在的队列 ID
// CallBack: 'http://callback.demo.com', // 任务回调的地址
// CallBackFormat: 'JSON', // 任务回调格式
// CallBackType: 'Url', // 任务回调类型Url 或 TDMQ默认 Url
}
});
cos.request({
Method: 'POST',
Key: 'file_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询哈希值计算任务结果
function getFileHashTask() {
var jobId = 'f99ca3336ebde11ed96313ffa040a7xxx'; // 提交文件哈希值计算任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'file_jobs/' + jobId,
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 提交文件解压任务
function postFileUnCompressTask() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'FileUncompress', // 必须
Input: {
Object: 'testCompress/compressed.zip', // 文件名,取值为文件在当前存储桶中的完整名称
},
Operation: {
FileUncompressConfig: {
Prefix: 'testCompress', // 指定解压后输出文件的前缀,不填则默认保存在存储桶根路径
PrefixReplaced: '0', // 指定解压后的文件路径是否需要替换前缀,默认0
},
Output: {
Bucket: config.Bucket, // 保存解压后文件的存储桶
Region: config.Region, // 保存解压后文件的存储桶地域
},
},
// QueueId: '', // 任务所在的队列 ID
// CallBack: 'http://callback.demo.com', // 任务回调的地址
// CallBackFormat: 'JSON', // 任务回调格式
// CallBackType: 'Url', // 任务回调类型Url 或 TDMQ默认 Url
}
});
cos.request({
Method: 'POST',
Key: 'file_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询文件解压任务结果
function getFileUnCompressTask() {
var jobId = 'f52028b26ebe211edae4c1b36c787axxx'; // 提交文件解压任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'file_jobs/' + jobId,
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 提交文件压缩任务
function postFileCompressTask() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'FileCompress', // 必须
Operation: {
FileCompressConfig: {
Flatten: '0', // 文件打包时,是否需要去除源文件已有的目录结构.0:不需要;1:需要
Format: 'zip', // 打包压缩的类型有效值zip、tar、tar.gz
// UrlList、Prefix、Key 三者仅能选择一个,不能都为空,也不会同时生效
// UrlList: '', // 索引文件的对象地址
Prefix: '/', // 目录前缀
Key: [''], // 支持对存储桶中的多个文件进行打包,个数不能超过 1000, 总大小不超过50G否则会导致任务失败
},
Output: {
Bucket: config.Bucket, // 保存压缩后文件的存储桶
Region: config.Region, // 保存压缩后文件的存储桶地域
Object: 'testCompress/compressed.zip', // 压缩后文件的文件名
},
UserData: '',
},
// QueueId: '', // 任务所在的队列 ID
// CallBack: 'http://callback.demo.com', // 任务回调的地址
// CallBackFormat: 'JSON', // 任务回调格式
// CallBackType: 'Url', // 任务回调类型Url 或 TDMQ默认 Url
}
});
cos.request({
Method: 'POST',
Key: 'file_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function(err, data){
console.log(err || data);
});
}
// 查询文件压缩任务结果
function getFileCompressTask() {
var jobId = 'fc3c90292ebdf11eda4be2be811d77xxx'; // 提交文件压缩任务后会返回当前任务的jobId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
var url = 'https://' + host;
cos.request({
Method: 'GET',
Key: 'file_jobs/' + jobId,
Url: url,
},
function(err, data){
console.log(err || data);
});
}
// 存储桶操作
// getService();
// getAuth();
// getV4Auth();
// getObjectUrl();
// putBucket();
// getBucket();
// headBucket();
// putBucketAcl();
// getBucketAcl();
// putBucketCors();
// getBucketCors();
// deleteBucketCors();
// putBucketTagging();
// getBucketTagging();
// deleteBucketTagging();
// putBucketPolicy();
// getBucketPolicy();
// deleteBucketPolicy();
// getBucketLocation();
// getBucketLifecycle();
// putBucketLifecycle();
// deleteBucketLifecycle();
// putBucketVersioning();
// getBucketVersioning();
// listObjectVersions();
// getBucketReplication();
// putBucketReplication();
// deleteBucketReplication();
// putBucketWebsite();
// getBucketWebsite();
// deleteBucketWebsite();
// putBucketReferer();
// getBucketReferer();
// putBucketDomain();
// getBucketDomain();
// deleteBucketDomain();
// putBucketOrigin();
// getBucketOrigin();
// deleteBucketOrigin();
// putBucketLogging();
// getBucketLogging();
// deleteBucketLogging();
// putBucketInventory();
// getBucketInventory();
// deleteBucketInventory();
// listBucketInventory();
// putBucketAccelerate();
// getBucketAccelerate();
// putBucketEncryption();
// getBucketEncryption();
// deleteBucketEncryption();
// deleteBucket();
// 对象操作
// putObjectCopy();
// getObjectStream();
// getObject();
// headObject();
// putObjectAcl();
// getObjectAcl();
// deleteObject();
// deleteMultipleObject();
// restoreObject();
// abortUploadTask();
// selectObjectContentStream();
// selectObjectContent();
// sliceUploadFile();
// uploadFile();
// uploadFiles();
// cancelTask();
// pauseTask();
// restartTask();
// putObject();
// putObject_base64();
// sliceCopyFile();
// putObjectTagging();
// getObjectTagging();
// deleteObjectTagging();
// appendObject();
// appendObject_continue();
// 其他示例
// moveObject();
// uploadFolder();
// createFolder();
// listFolder();
// deleteFolder();
// downloadFile();
// request();
// 数据处理
// DescribeCIBuckets();
// GetMediaInfo();
// GetSnapshot();
//DescribeDocProcessBuckets();
//GetDocProcess()
//DescribeDocProcessQueues()
//UpdateDocProcessQueue()
//CreateDocProcessJobs();
//DescribeDocProcessJob();
//DescribeDocProcessJobs();
//DescribeMediaBuckets();
//DescribeMediaQueues();
//UpdateMediaQueue();
//CreateMediaTemplate();
//DeleteMediaTemplate();
//DescribeMediaTemplates()
//UpdateMediaTemplate()
//CreateMediaJobs();
//CancelMediaJob();
//DescribeMediaJob();
//DescribeMediaJobs();
//CreateWorkflow();
//DeleteWorkflow();
//DescribeWorkflow();
//DescribeWorkflowExecution();
//DescribeWorkflowExecutions();
//UpdateWorkflow();
//TriggerWorkflow();
//GetPrivateM3U8();
// SyncAuditImageObject()
// SyncAuditImageUrl()
// SyncAuditImageUrls()
// SyncAuditTextContent()
// CreateAuditJob()
// DescribeAuditJob()
// postLiveAuditing();
// getLiveAuditingResult();
// postVirusDetect();
// getVirusDetectResult();
// postNoiseReduction();
// postVoiceSeparate();
// postTts();
// postSpeechRecognition();
// getAsrQueue();
// putAsrQueue();
// getAsrBucket();
// setRefer();
// describeRefer();
// openOriginProtect();
// describeOriginProtect();
// closeOriginProtect();
// addImageStyle();
// describeImageStyles();
// deleteImageStyle();
// openImageGuetzli();
// describeImageGuetzli();
// closeImageGuetzli();
// advanceCompressExample1();
// advanceCompressExample2();
// advanceCompressExample3();
// createImageInspectJob();
// updatePicProcessQueue();
// describePicProcessQueues();
// describeDocProcessBuckets();
// previewDocumentAsync();
// createDocProcessJobs();
// describeDocProcessJob();
// describeDocProcessJobs();
// updateDocProcessQueue();
// describeDocProcessQueues();
// getDocHtmlUrl();
// getDocHtmlPreviewUrl();
// createFileProcessBucket();
// updateFileProcessQueue();
// describeFileProcessQueues();
// generateFileHash();
// postFileHashTask();
// getFileHashTask();
// postFileUnCompressTask();
// getFileUnCompressTask();
// postFileCompressTask();
// getFileCompressTask();