t-comm
Version:
专业、稳定、纯粹的工具库
146 lines (141 loc) • 3.9 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tencentCloud_cos_helper = require('./helper.js');
require('../../bite/format-bite.js');
var pushFiles = function pushFiles(_a) {
var files = _a.files,
bucket = _a.bucket,
region = _a.region;
return files.map(function (file) {
return {
Bucket: bucket,
Region: region,
Key: file.key,
FilePath: file.path
};
});
};
/**
* COS上传
* @param {object} config 配置信息
* @param {Array<object>} config.files 文件列表
* @param {string} config.files.key 文件key
* @param {string} config.files.path 文件路径
* @param {string} config.secretId COS secretId
* @param {string} config.secretKey COS secretKey
* @param {string} config.bucket COS bucket
* @param {string} config.region COS region
* @returns {Promise<object>} 请求Promise
*
* @example
*
* uploadCOSFile({
* files: [{
* key: 'key1',
* path: 'path1',
* }, {
* key: 'key2',
* path: 'path2',
* }],
* secretId: 'xxx',
* secretKey: 'xxx',
* bucket: 'xxx',
* region: 'xxx',
* })
*/
function uploadCOSFile(_a) {
var files = _a.files,
secretId = _a.secretId,
secretKey = _a.secretKey,
bucket = _a.bucket,
region = _a.region;
return new Promise(function (resolve, reject) {
if (!secretId || !secretKey || !bucket || !region || !files) {
reject('[Upload COS Error] 参数不全');
return;
}
if (!files.length) {
reject('[Upload COS Error] 上传文件不能为空');
return;
}
var cos = tencentCloud_cos_helper.getCOSInstance(secretId, secretKey);
var fileList = pushFiles({
files: files,
bucket: bucket,
region: region
});
cos.uploadFiles({
files: fileList,
SliceSize: 1024 * 1024,
onProgress: tencentCloud_cos_helper.onUploadCOSProgress,
onFileFinish: function onFileFinish(err, data, options) {
resolve(data);
console.log("[uploadCOSFile] \u4E0A\u4F20".concat(err ? '失败' : '完成', ": ").concat(options.Key));
}
}, function (err, data) {
reject(err || data);
});
});
}
function getCOSBucketList(_a) {
var secretId = _a.secretId,
secretKey = _a.secretKey,
bucket = _a.bucket,
region = _a.region,
prefix = _a.prefix;
return new Promise(function (resolve, reject) {
if (!secretId || !secretKey || !bucket || !region) {
reject('[Get COS List Error] 参数不全');
return;
}
var cos = tencentCloud_cos_helper.getCOSInstance(secretId, secretKey);
cos.getBucket({
Bucket: bucket,
Region: region,
Prefix: prefix /* 非必须 */
}, function (err, data) {
if (err) {
reject(err);
} else {
resolve(data.Contents);
}
});
});
}
function deleteCOSMultipleObject(_a) {
var secretId = _a.secretId,
secretKey = _a.secretKey,
keys = _a.keys,
bucket = _a.bucket,
region = _a.region;
return new Promise(function (resolve, reject) {
if (!secretId || !secretKey || !bucket || !keys) {
reject('[Delete COS Object Error] 参数不全');
return;
}
if (!keys.length) {
reject('[Delete COS Object Error] 删除keys不能为空');
return;
}
var cos = tencentCloud_cos_helper.getCOSInstance(secretId, secretKey);
cos.deleteMultipleObject({
Bucket: bucket,
Region: region,
/* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),必须字段 */
Objects: keys.map(function (item) {
return {
Key: item
};
})
}, function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
exports.deleteCOSMultipleObject = deleteCOSMultipleObject;
exports.getCOSBucketList = getCOSBucketList;
exports.uploadCOSFile = uploadCOSFile;