cos-nodejs-sdk-v5
Version:
cos nodejs sdk v5
2,124 lines (2,012 loc) • 148 kB
JavaScript
// @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:',
Timeout: 10000,
});
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-beijing',
CreateRange: 'lt',
CreateTime: 1642662645,
// TagKey: 'k1',
// TagValue: 'v1',
MaxKeys: 20,
},
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';