You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1415 lines
45 KiB
1415 lines
45 KiB
var COS = require('./lib/cos-wx-sdk-v5');
|
|
var wxfs = wx.getFileSystemManager();
|
|
var config = require('./config');
|
|
|
|
var TaskId;
|
|
|
|
// 签名回调
|
|
var getAuthorization = function (options, callback) {
|
|
// 格式一、(推荐)后端通过获取临时密钥给到前端,前端计算签名
|
|
// 服务端 JS 和 PHP 例子:https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/
|
|
// 服务端其他语言参考 COS STS SDK :https://github.com/tencentyun/qcloud-cos-sts-sdk
|
|
wx.request({
|
|
method: 'GET',
|
|
url: config.stsUrl, // 服务端签名,参考 server 目录下的两个签名例子
|
|
dataType: 'json',
|
|
success: function (result) {
|
|
var data = result.data;
|
|
var credentials = data && data.credentials;
|
|
if (!data || !credentials) return console.error('credentials invalid');
|
|
callback({
|
|
TmpSecretId: credentials.tmpSecretId,
|
|
TmpSecretKey: credentials.tmpSecretKey,
|
|
SecurityToken: credentials.sessionToken,
|
|
StartTime: data.startTime, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
|
|
ExpiredTime: data.expiredTime, // 时间戳,单位秒,如:1580000900
|
|
});
|
|
},
|
|
});
|
|
|
|
// // 格式二、(推荐)【细粒度控制权限】后端通过获取临时密钥给到前端,前端只有相同请求才重复使用临时密钥,后端可以通过 Scope 细粒度控制权限
|
|
// // 服务端例子:https://github.com/tencentyun/qcloud-cos-sts-sdk/edit/master/scope.md
|
|
// wx.request({
|
|
// method: 'POST',
|
|
// url: 'http://127.0.0.1:3000/sts-scope',
|
|
// data: options.Scope,
|
|
// dataType: 'json',
|
|
// success: function(result) {
|
|
// var data = result.data;
|
|
// var credentials = data && data.credentials;
|
|
// if (!data || !credentials) return console.error('credentials invalid');
|
|
// callback({
|
|
// TmpSecretId: credentials.tmpSecretId,
|
|
// TmpSecretKey: credentials.tmpSecretKey,
|
|
// XCosSecurityToken: credentials.sessionToken,
|
|
// StartTime: data.startTime, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
|
|
// ExpiredTime: data.expiredTime, // 时间戳,单位秒,如:1580000900
|
|
// ScopeLimit: true, // 细粒度控制权限需要设为 true,会限制密钥只在相同请求时重复使用
|
|
// });
|
|
// }
|
|
// });
|
|
|
|
// // 格式三、(不推荐,分片上传权限不好控制)前端每次请求前都需要通过 getAuthorization 获取签名,后端使用固定密钥或临时密钥计算签名返回给前端
|
|
// // 服务端获取签名,请参考对应语言的 COS SDK:https://cloud.tencent.com/document/product/436/6474
|
|
// // 注意:这种有安全风险,后端需要通过 method、pathname 严格控制好权限,比如不允许 put / 等
|
|
// wx.request({
|
|
// method: 'POST',
|
|
// url: 'https://example.com/sts-auth.php, // 服务端签名,参考 server 目录下的两个签名例子
|
|
// data: {
|
|
// method: options.Method,
|
|
// pathname: options.Pathname,
|
|
// query: options.Query,
|
|
// headers: options.Headers,
|
|
// },
|
|
// dataType: 'json',
|
|
// success: function(result) {
|
|
// var data = result.data;
|
|
// if (!data || !data.authorization) return console.error('authorization invalid');
|
|
// callback({
|
|
// Authorization: data.authorization,
|
|
// // XCosSecurityToken: data.sessionToken, // 如果使用临时密钥,需要传 sessionToken
|
|
// });
|
|
// }
|
|
// });
|
|
|
|
// // 格式四、(不推荐,适用于前端调试,避免泄露密钥)前端使用固定密钥计算签名
|
|
// var authorization = COS.getAuthorization({
|
|
// SecretId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
|
|
// SecretKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
|
|
// Method: options.Method,
|
|
// Pathname: options.Pathname,
|
|
// Query: options.Query,
|
|
// Headers: options.Headers,
|
|
// Expires: 60,
|
|
// });
|
|
// callback({
|
|
// Authorization: authorization,
|
|
// // XCosSecurityToken: credentials.sessionToken, // 如果使用临时密钥,需要传 XCosSecurityToken
|
|
// });
|
|
};
|
|
|
|
var cos = new COS({
|
|
// path style 指正式请求时,Bucket 是在 path 里,这样用相同园区多个 bucket 只需要配置一个园区域名
|
|
// ForcePathStyle: true,
|
|
getAuthorization: getAuthorization,
|
|
// 是否使用全球加速域名。开启该配置后仅以下接口支持操作:putObject、getObject、headObject、optionsObject、multipartInit、multipartListPart、multipartUpload、multipartAbort、multipartComplete、multipartList、sliceUploadFile、uploadFiles
|
|
// UseAccelerate: true,
|
|
});
|
|
|
|
// 回调统一处理函数
|
|
var requestCallback = function (err, data) {
|
|
console.log(err || data);
|
|
if (err && err.error) {
|
|
wx.showModal({
|
|
title: '返回错误',
|
|
content: '请求失败:' + (err.error.Message || err.error) + ';状态码:' + err.statusCode,
|
|
showCancel: false,
|
|
});
|
|
} else if (err) {
|
|
wx.showModal({
|
|
title: '请求出错',
|
|
content: '请求出错:' + err + ';状态码:' + err.statusCode,
|
|
showCancel: false,
|
|
});
|
|
} else {
|
|
wx.showToast({
|
|
title: '请求成功',
|
|
icon: 'success',
|
|
duration: 3000,
|
|
});
|
|
}
|
|
};
|
|
|
|
var mylog = function (msg) {
|
|
wx.showToast({
|
|
title: msg,
|
|
icon: 'success',
|
|
duration: 3000,
|
|
});
|
|
};
|
|
|
|
// 对云上数据进行图片处理
|
|
function request() {
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: 'photo.png',
|
|
Method: 'POST',
|
|
Action: 'image_process',
|
|
Headers: {
|
|
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
|
|
'Pic-Operations':
|
|
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/thumbnail/200x/"}]}',
|
|
},
|
|
},
|
|
(err, data) => {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
}
|
|
|
|
function uploadFile() {
|
|
var uploadFile = function (file) {
|
|
cos.uploadFile(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: file.name,
|
|
FilePath: file.path,
|
|
FileSize: file.size,
|
|
SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
|
|
onTaskReady: function (taskId) {
|
|
TaskId = taskId;
|
|
},
|
|
onProgress: function (info) {
|
|
var percent = parseInt(info.percent * 10000) / 100;
|
|
var speed = parseInt((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);
|
|
},
|
|
);
|
|
};
|
|
wx.chooseMessageFile({
|
|
count: 10,
|
|
type: 'all',
|
|
success: function (res) {
|
|
uploadFile(res.tempFiles[0]);
|
|
},
|
|
});
|
|
}
|
|
|
|
function uploadFiles() {
|
|
var uploadFiles = function (files) {
|
|
const fileList = files.map(function (file) {
|
|
return Object.assign(file, {
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: file.name,
|
|
FilePath: file.path,
|
|
});
|
|
});
|
|
cos.uploadFiles(
|
|
{
|
|
files: fileList,
|
|
SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
|
|
onProgress: function (info) {
|
|
var percent = parseInt(info.percent * 10000) / 100;
|
|
var speed = parseInt((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);
|
|
},
|
|
);
|
|
};
|
|
wx.chooseMessageFile({
|
|
count: 10,
|
|
type: 'all',
|
|
success: function (res) {
|
|
uploadFiles(res.tempFiles);
|
|
},
|
|
});
|
|
}
|
|
|
|
function sliceUploadFile() {
|
|
var sliceUploadFile = function (file) {
|
|
var key = file.name;
|
|
cos.sliceUploadFile(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: key,
|
|
FilePath: file.path,
|
|
FileSize: file.size,
|
|
CacheControl: 'max-age=7200',
|
|
Headers: {
|
|
aa: 123,
|
|
},
|
|
Query: {
|
|
bb: 123,
|
|
},
|
|
onTaskReady: function (taskId) {
|
|
TaskId = taskId;
|
|
},
|
|
onHashProgress: function (info) {
|
|
console.log('check hash', JSON.stringify(info));
|
|
},
|
|
onProgress: function (info) {
|
|
console.log(JSON.stringify(info));
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
};
|
|
wx.chooseMessageFile({
|
|
count: 10,
|
|
type: 'all',
|
|
success: function (res) {
|
|
sliceUploadFile(res.tempFiles[0]);
|
|
},
|
|
});
|
|
// wx.chooseVideo({
|
|
// sourceType: ['album','camera'],
|
|
// maxDuration: 60,
|
|
// camera: 'back',
|
|
// success(res) {
|
|
// var name = res.tempFilePath.replace(/^.*?([^/]{32}\.\w+)$/, '$1');
|
|
// sliceUploadFile({
|
|
// name: name,
|
|
// path: res.tempFilePath,
|
|
// size: res.size,
|
|
// });
|
|
// },
|
|
// fail(err) {
|
|
// console.log(err);
|
|
// }
|
|
// })
|
|
}
|
|
|
|
function postObject() {
|
|
wx.chooseImage({
|
|
count: 1, // 默认9
|
|
sizeType: ['original'], // 可以指定是原图还是压缩图,默认二者都有
|
|
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
|
success: function (res) {
|
|
var file = res.tempFiles[0];
|
|
cos.postObject(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: '1.png',
|
|
FilePath: file.path,
|
|
onTaskReady: function (taskId) {
|
|
TaskId = taskId;
|
|
},
|
|
onProgress: function (info) {
|
|
console.log(JSON.stringify(info));
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
});
|
|
}
|
|
|
|
function putObject() {
|
|
wx.chooseMessageFile({
|
|
count: 10,
|
|
type: 'all',
|
|
success: function (res) {
|
|
var file = res.tempFiles[0];
|
|
wxfs.readFile({
|
|
filePath: file.path,
|
|
success: function (res) {
|
|
cos.putObject(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: file.name,
|
|
Body: res.data, // 在小程序里,putObject 接口只允许传字符串的内容,不支持 TaskReady 和 onProgress,上传请使用 cos.postObject 接口
|
|
Headers: {
|
|
// 万象持久化接口,上传时持久化。例子:通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
|
|
// 'Pic-Operations': '{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/thumbnail/200x/"}]}'
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
fail: (err) => console.error(err),
|
|
});
|
|
},
|
|
fail: (err) => console.error(err),
|
|
});
|
|
}
|
|
|
|
function putObjectStr() {
|
|
cos.putObject(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: '1.txt',
|
|
Body: 'hello world', // 在小程序里,putObject 接口只允许传字符串的内容,不支持 TaskReady 和 onProgress,上传请使用 cos.postObject 接口
|
|
Headers: {
|
|
aa: 123,
|
|
},
|
|
Query: {
|
|
bb: 123,
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
}
|
|
|
|
function putObjectBase64() {
|
|
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 m = /data:image\/(\w+);base64,(.*)/.exec(base64Url) || [];
|
|
var format = m[1];
|
|
var bodyData = m[2];
|
|
var fileBuf = wx.base64ToArrayBuffer(bodyData);
|
|
cos.putObject(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: '1.' + format,
|
|
Body: fileBuf,
|
|
},
|
|
requestCallback,
|
|
);
|
|
}
|
|
|
|
function getObjectUrl() {
|
|
var url = cos.getObjectUrl(
|
|
{
|
|
Bucket: config.Bucket, // Bucket 格式:test-1250000000
|
|
Region: config.Region,
|
|
Key: '1mb.zip',
|
|
Expires: 60,
|
|
Sign: true,
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
console.log(url);
|
|
}
|
|
|
|
var toolsDao = {
|
|
request: request,
|
|
'uploadFile 高级上传': uploadFile,
|
|
'uploadFiles 批量上传': uploadFiles,
|
|
'sliceUploadFile 分片上传': sliceUploadFile,
|
|
// 上传文件适用于单请求上传大文件
|
|
'postObject 简单上传': postObject,
|
|
'putObject 简单上传文件': putObject,
|
|
'putObject 上传字符串': putObjectStr,
|
|
// 上传文件
|
|
'putObject base64 转 ArrayBuffer 上传': putObjectBase64,
|
|
'getObjectUrl 获取对象访问url': getObjectUrl,
|
|
};
|
|
|
|
var bucketDao = {
|
|
// Service
|
|
'getService 获取存储桶列表': function () {
|
|
cos.getService(requestCallback);
|
|
},
|
|
// 简单 Bucket 操作
|
|
'putBucket 创建存储桶': function () {
|
|
cos.putBucket(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'headBucket 检索存储桶及其权限': function () {
|
|
cos.headBucket(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'deleteBucket 删除存储桶': function () {
|
|
cos.deleteBucket(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'getBucketACL 查询存储桶 ACL': function () {
|
|
cos.getBucketAcl(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'putBucketACL 设置存储桶 ACL': function () {
|
|
cos.putBucketAcl(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
ACL: 'public-read',
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'getBucketCors 查询跨域配置': function () {
|
|
cos.getBucketCors(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'putBucketCors 设置跨域配置': function () {
|
|
cos.putBucketCors(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
ResponseVary: 'true',
|
|
CORSRules: [
|
|
{
|
|
AllowedOrigin: ['*'],
|
|
AllowedMethod: ['GET', 'POST', 'PUT', 'DELETE', 'HEAD'],
|
|
AllowedHeader: ['*'],
|
|
ExposeHeader: ['ETag', 'Content-Length'],
|
|
MaxAgeSeconds: '5',
|
|
},
|
|
],
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'deleteBucketCors 删除跨域配置': function () {
|
|
cos.deleteBucketCors(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'putBucketPolicy 设置存储桶策略': function () {
|
|
var AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
|
|
cos.putBucketPolicy(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Policy: {
|
|
version: '2.0',
|
|
principal: {
|
|
qcs: ['qcs::cam::uin/10001:uin/10001'],
|
|
}, // 这里的 10001 是 QQ 号
|
|
statement: [
|
|
{
|
|
effect: 'allow',
|
|
action: [
|
|
'name/cos:GetBucket',
|
|
'name/cos:PutObject',
|
|
'name/cos:PostObject',
|
|
'name/cos:PutObjectCopy',
|
|
'name/cos:InitiateMultipartUpload',
|
|
'name/cos:UploadPart',
|
|
'name/cos:UploadPartCopy',
|
|
'name/cos:CompleteMultipartUpload',
|
|
'name/cos:AbortMultipartUpload',
|
|
'name/cos:AppendObject',
|
|
],
|
|
// "resource": ["qcs::cos:ap-guangzhou:uid/1250000000:test-1250000000/*"] // 1250000000 是 appid
|
|
resource: ['qcs::cos:' + config.Region + ':uid/' + AppId + ':' + config.Bucket + '/*'], // 1250000000 是 appid
|
|
},
|
|
],
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'getBucketPolicy 查询存储桶策略': function () {
|
|
cos.getBucketPolicy(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'deleteBucketPolicy 删除存储桶策略': function () {
|
|
cos.deleteBucketPolicy(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'getBucketLocation 获取Bucket的地域信息': function () {
|
|
cos.getBucketLocation(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'getBucketTagging 获取Bucket标签': function () {
|
|
cos.getBucketTagging(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'putBucketTagging 设置Bucket标签': function () {
|
|
cos.putBucketTagging(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Tagging: {
|
|
Tags: [
|
|
{
|
|
Key: 'k1',
|
|
Value: 'v1',
|
|
},
|
|
{
|
|
Key: 'k2',
|
|
Value: 'v2',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'deleteBucketTagging 删除存储桶标签': function () {
|
|
cos.deleteBucketTagging(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
};
|
|
|
|
var objectDao = {
|
|
'getBucket 获取对象列表': function () {
|
|
cos.getBucket(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
// 上传文件适用于单请求上传大文件
|
|
'postObject 表单上传对象': postObject,
|
|
'putObject 简单上传文件': putObject,
|
|
'putObject 上传字符串': putObjectStr,
|
|
// 上传文件
|
|
'putObject base64 转 ArrayBuffer 上传': putObjectBase64,
|
|
'getObject 下载对象': function () {
|
|
cos.getObject({
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: '1.png',
|
|
function(err, data) {
|
|
console.log('getObject:', err || data);
|
|
},
|
|
});
|
|
},
|
|
'abortUploadTask 抛弃分块上传任务': function () {
|
|
cos.abortUploadTask(
|
|
{
|
|
Bucket: config.Bucket,
|
|
/* 必须 */ // Bucket 格式:test-1250000000
|
|
Region: config.Region,
|
|
/* 必须 */
|
|
// 格式1,删除单个上传任务
|
|
// Level: 'task',
|
|
// Key: '10mb.zip',
|
|
// UploadId: '14985543913e4e2642e31db217b9a1a3d9b3cd6cf62abfda23372c8d36ffa38585492681e3',
|
|
// 格式2,删除单个文件所有未完成上传任务
|
|
Level: 'file',
|
|
Key: '10mb.zip',
|
|
// 格式3,删除 Bucket 下所有未完成上传任务
|
|
// Level: 'bucket',
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
};
|
|
|
|
var advanceObjectDao = {
|
|
'sliceUploadFile 分块上传': function () {
|
|
var sliceUploadFile = function (file) {
|
|
var key = file.name;
|
|
cos.sliceUploadFile(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: key,
|
|
FilePath: file.path,
|
|
FileSize: file.size,
|
|
CacheControl: 'max-age=7200',
|
|
Headers: {
|
|
aa: 123,
|
|
},
|
|
Query: {
|
|
bb: 123,
|
|
},
|
|
onTaskReady: function (taskId) {
|
|
TaskId = taskId;
|
|
},
|
|
onHashProgress: function (info) {
|
|
console.log('check hash', JSON.stringify(info));
|
|
},
|
|
onProgress: function (info) {
|
|
console.log(JSON.stringify(info));
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
};
|
|
wx.chooseMessageFile({
|
|
count: 10,
|
|
type: 'all',
|
|
success: function (res) {
|
|
sliceUploadFile(res.tempFiles[0]);
|
|
},
|
|
});
|
|
// wx.chooseVideo({
|
|
// sourceType: ['album','camera'],
|
|
// maxDuration: 60,
|
|
// camera: 'back',
|
|
// success(res) {
|
|
// var name = res.tempFilePath.replace(/^.*?([^/]{32}\.\w+)$/, '$1');
|
|
// sliceUploadFile({
|
|
// name: name,
|
|
// path: res.tempFilePath,
|
|
// size: res.size,
|
|
// });
|
|
// },
|
|
// fail(err) {
|
|
// console.log(err);
|
|
// }
|
|
// })
|
|
},
|
|
'sliceCopyFile 分块复制对象': function () {
|
|
// 创建测试文件
|
|
var sourceName = '1.txt';
|
|
var Key = '1.slicecopy.exe';
|
|
|
|
var sourcePath = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + sourceName;
|
|
|
|
cos.sliceCopyFile(
|
|
{
|
|
Bucket: config.Bucket, // Bucket 格式:test-1250000000
|
|
Region: config.Region,
|
|
Key: Key,
|
|
CopySource: sourcePath,
|
|
SliceSize: 20 * 1024 * 1024, // 大于20M的文件用分片复制,小于则用单片复制
|
|
onProgress: function (info) {
|
|
var percent = parseInt(info.percent * 10000) / 100;
|
|
var speed = parseInt((info.speed / 1024 / 1024) * 100) / 100;
|
|
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
cancelTask: function () {
|
|
cos.cancelTask(TaskId);
|
|
console.log('canceled');
|
|
},
|
|
pauseTask: function () {
|
|
cos.pauseTask(TaskId);
|
|
console.log('paused');
|
|
},
|
|
restartTask: function () {
|
|
cos.restartTask(TaskId);
|
|
console.log('restart');
|
|
},
|
|
};
|
|
|
|
var ciObjectDao = {
|
|
'uploadImg 上传时使用图片处理': function () {
|
|
wx.chooseMessageFile({
|
|
count: 10,
|
|
type: 'all',
|
|
success: function (res) {
|
|
var file = res.tempFiles[0];
|
|
wxfs.readFile({
|
|
filePath: file.path,
|
|
success: function (res) {
|
|
cos.putObject(
|
|
{
|
|
Bucket: config.Bucket, // Bucket 格式:test-1250000000
|
|
Region: config.Region,
|
|
Key: file.name,
|
|
Body: res.data,
|
|
Headers: {
|
|
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
|
|
'Pic-Operations':
|
|
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/thumbnail/200x/"}]}',
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
fail: (err) => console.error(err),
|
|
});
|
|
},
|
|
fail: (err) => console.error(err),
|
|
});
|
|
},
|
|
'requestImg 对云上数据进行图片处理': function () {
|
|
// 对云上数据进行图片处理
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: 'photo.png',
|
|
Method: 'POST',
|
|
Action: 'image_process',
|
|
Headers: {
|
|
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
|
|
'Pic-Operations':
|
|
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/thumbnail/200x/"}]}',
|
|
},
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'getImg 下载时使用图片处理': function () {
|
|
cos.getObject(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: '1.png',
|
|
QueryString: `imageMogr2/thumbnail/200x/`,
|
|
},
|
|
requestCallback,
|
|
);
|
|
},
|
|
'生成带图片处理参数的签名 URL': function () {
|
|
// 生成带图片处理参数的文件签名URL,过期时间设置为 30 分钟。
|
|
cos.getObjectUrl(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: 'photo.png',
|
|
QueryString: `imageMogr2/thumbnail/200x/`,
|
|
Expires: 1800,
|
|
Sign: true,
|
|
},
|
|
(err, data) => {
|
|
console.log('带签名', err || data);
|
|
},
|
|
);
|
|
|
|
// 生成带图片处理参数的文件URL,不带签名。
|
|
cos.getObjectUrl(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Key: 'photo.png',
|
|
QueryString: `imageMogr2/thumbnail/200x/`,
|
|
Sign: false,
|
|
},
|
|
(err, data) => {
|
|
console.log('不带签名', err || data);
|
|
},
|
|
);
|
|
},
|
|
'describeMediaBuckets 查询已经开通数据万象功能的存储桶': function () {
|
|
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) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'getMediaInfo 获取媒体文件信息': function () {
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'GET',
|
|
Key: 'test.mp4',
|
|
Query: {
|
|
'ci-process': 'videoinfo' /** 固定值,必须 */,
|
|
},
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'getSnapshot 获取媒体文件某个时间的截图': function () {
|
|
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) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'图片同步审核 getImageAuditing': function () {
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'GET',
|
|
Key: '1.png',
|
|
Query: {
|
|
'ci-process': 'sensitive-content-recognition' /** 固定值,必须 */,
|
|
'biz-type': '' /** 审核类型,非必须 */,
|
|
'detect-url': '' /** 审核任意公网可访问的图片链接,非必须,与Key二选一传递 */,
|
|
interval: 5 /** 审核 GIF 动图时,每隔interval帧截取一帧,非必须 */,
|
|
'max-frames': 5 /** 审核 GIF 动图时,最大截帧数,非必须 */,
|
|
'large-image-detect': '0' /** 是否需要压缩图片后再审核,非必须 */,
|
|
},
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'图片批量审核 postImagesAuditing': function () {
|
|
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
|
|
var url = 'https://' + host + '/image/auditing';
|
|
var body = COS.util.json2xml({
|
|
Request: {
|
|
Input: [
|
|
{
|
|
Object: '1.png',
|
|
},
|
|
{
|
|
Object: '6.png',
|
|
},
|
|
],
|
|
Conf: {
|
|
BizType: '',
|
|
},
|
|
},
|
|
});
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'POST',
|
|
Url: url,
|
|
Key: '/image/auditing',
|
|
ContentType: 'application/xml',
|
|
Body: body,
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'查询图片审核任务结果 getImageAuditingResult': function () {
|
|
var jobId = 'si8263213daf3711eca0d1525400d88xxx'; // jobId可以通过图片批量审核返回
|
|
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
|
|
var url = 'https://' + host + '/image/auditing/' + jobId;
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'GET',
|
|
Key: '/image/auditing/' + jobId,
|
|
Url: url,
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'提交视频审核任务 postVideoAuditing': function () {
|
|
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
|
|
var url = 'https://' + host + '/video/auditing';
|
|
var body = COS.util.json2xml({
|
|
Request: {
|
|
Input: {
|
|
Object: '1.mp4',
|
|
},
|
|
Conf: {
|
|
BizType: '',
|
|
Snapshot: {
|
|
Count: 1000, // 视频截帧数量
|
|
},
|
|
DetectContent: 1, // 是否审核视频声音,0-只审核视频不审核声音;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);
|
|
},
|
|
);
|
|
},
|
|
'查询视频审核任务结果 getVideoAuditingResult': function () {
|
|
var jobId = 'av5bd873d9f39011ecb6c95254009a49da'; // 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);
|
|
},
|
|
);
|
|
},
|
|
'提交音频审核任务 postAudioAuditing': function () {
|
|
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
|
|
var url = 'https://' + host + '/audio/auditing';
|
|
var body = COS.util.json2xml({
|
|
Request: {
|
|
Input: {
|
|
Object: '1.mp3',
|
|
},
|
|
Conf: {
|
|
BizType: '',
|
|
},
|
|
},
|
|
});
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'POST',
|
|
Url: url,
|
|
Key: '/audio/auditing',
|
|
ContentType: 'application/xml',
|
|
Body: body,
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'查询音频审核任务结果 getAudioAuditingResult': function () {
|
|
var jobId = 'sa0c28d41daff411ecb23352540078cxxx'; // jobId可以通过提交音频审核任务返回
|
|
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
|
|
var url = 'https://' + host + '/audio/auditing/' + jobId;
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'GET',
|
|
Key: '/audio/auditing/' + jobId,
|
|
Url: url,
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'提交文本审核任务 postTextAuditing': function () {
|
|
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
|
|
var url = 'https://' + host + '/text/auditing';
|
|
var body = COS.util.json2xml({
|
|
Request: {
|
|
Input: {
|
|
Content: COS.util.encodeBase64('hello') /* 需要审核的文本内容 */,
|
|
},
|
|
Conf: {
|
|
BizType: '',
|
|
},
|
|
},
|
|
});
|
|
cos.request(
|
|
{
|
|
Bucket: config.Bucket,
|
|
Region: config.Region,
|
|
Method: 'POST',
|
|
Url: url,
|
|
Key: '/text/auditing' /** 固定值,必须 */,
|
|
ContentType: 'application/xml' /** 固定值,必须 */,
|
|
Body: body,
|
|
},
|
|
function (err, data) {
|
|
console.log(err || data);
|
|
},
|
|
);
|
|
},
|
|
'提交直播审核任务 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: '',
|
|
// 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);
|
|
},
|
|
);
|
|
},
|
|
'查询直播审核任务结果 getLiveAuditingResult'() {
|
|
var jobId = 'av2b14a74dbd9011edb05a52540084c0xx'; // 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);
|
|
},
|
|
);
|
|
},
|
|
'提交病毒检测任务 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);
|
|
},
|
|
);
|
|
},
|
|
'查询病毒检测任务结果 getVirusDetectResult'() {
|
|
var jobId = 'ss5a8d3065bd9011eda1445254009dadxx'; // 提交病毒检测任务后会返回当前任务的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);
|
|
},
|
|
);
|
|
},
|
|
'提交音频降噪任务 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);
|
|
},
|
|
);
|
|
},
|
|
'提交人声分离任务 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);
|
|
},
|
|
);
|
|
},
|
|
'提交语音合成任务 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);
|
|
},
|
|
);
|
|
},
|
|
'提交语音识别任务 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);
|
|
},
|
|
);
|
|
},
|
|
'查询语音识别队列 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);
|
|
},
|
|
);
|
|
},
|
|
'更新语音识别队列 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);
|
|
},
|
|
);
|
|
},
|
|
'查询语音识别开通状态 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);
|
|
},
|
|
);
|
|
},
|
|
};
|
|
|
|
// require('./test');
|
|
|
|
module.exports = {
|
|
toolsDao: toolsDao,
|
|
bucketDao: bucketDao,
|
|
objectDao: objectDao,
|
|
advanceObjectDao: advanceObjectDao,
|
|
ciObjectDao: ciObjectDao,
|
|
};
|
|
|