t-comm
Version:
专业、稳定、纯粹的工具库
190 lines (185 loc) • 5.45 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tencentCloud_cos_helper = require('./helper.js');
require('../../bite/format-bite.js');
require('../../third-party/cos-nodejs-sdk-v5.js');
var pushFiles = function pushFiles(_ref) {
var files = _ref.files,
bucket = _ref.bucket,
region = _ref.region;
return files.map(function (file) {
return Object.assign({
Bucket: bucket,
Region: region,
Key: file.key,
FilePath: file.path
}, file.ContentType ? {
ContentType: file.ContentType
} : {});
});
};
/**
* COS上传
* @param {object} config 配置信息
* @param {Array<object>} config.files 文件列表
* @param {string} config.files.key 文件key
* @param {string} config.files.path 文件路径
* @param {string} [config.files.ContentType] 文件 MIME 类型(如 image/svg+xml),不传则由 COS 根据扩展名推断
* @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(_ref2) {
var files = _ref2.files,
secretId = _ref2.secretId,
secretKey = _ref2.secretKey,
bucket = _ref2.bucket,
region = _ref2.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);
});
});
}
/**
* 获取 COS 存储桶中的文件列表
* @param {object} config 配置信息
* @param {string} config.secretId COS secretId
* @param {string} config.secretKey COS secretKey
* @param {string} config.bucket COS bucket
* @param {string} config.region COS region
* @param {string} config.prefix 文件前缀过滤
* @returns {Promise<Array<ICosMeta>>} 文件元信息列表
* @example
* ```ts
* const list = await getCOSBucketList({
* secretId: 'xxx',
* secretKey: 'xxx',
* bucket: 'my-bucket-1250000000',
* region: 'ap-guangzhou',
* prefix: 'static/',
* });
* ```
*/
function getCOSBucketList(_ref3) {
var secretId = _ref3.secretId,
secretKey = _ref3.secretKey,
bucket = _ref3.bucket,
region = _ref3.region,
prefix = _ref3.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);
}
});
});
}
/**
* 批量删除 COS 存储桶中的多个对象
* @param {object} config 配置信息
* @param {string} config.secretId COS secretId
* @param {string} config.secretKey COS secretKey
* @param {Array<string>} config.keys 要删除的对象 key 列表
* @param {string} config.bucket COS bucket
* @param {string} config.region COS region
* @returns {Promise<any>} 删除结果
* @example
* ```ts
* await deleteCOSMultipleObject({
* secretId: 'xxx',
* secretKey: 'xxx',
* keys: ['static/old-file1.js', 'static/old-file2.js'],
* bucket: 'my-bucket-1250000000',
* region: 'ap-guangzhou',
* });
* ```
*/
function deleteCOSMultipleObject(_ref4) {
var secretId = _ref4.secretId,
secretKey = _ref4.secretKey,
keys = _ref4.keys,
bucket = _ref4.bucket,
region = _ref4.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;