better-qiniu-cli
Version:
更好的 Node.js 七牛云命令行工具。
42 lines (41 loc) • 1.75 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const globby_1 = __importDefault(require("globby"));
const path_1 = __importDefault(require("path"));
const vtils_1 = require("vtils");
const qiniu_1 = require("qiniu");
exports.upload = async ({ mac, options }) => {
return new Promise(async (resolve, reject) => {
const { bucket, from, to = '', cwd = process.cwd() } = options;
const files = await globby_1.default(vtils_1.castArray(from), {
cwd: cwd,
onlyFiles: true,
});
Promise
.all(files.map(file => {
return new Promise((resolve, reject) => {
const config = new qiniu_1.conf.Config();
const formUploader = new qiniu_1.form_up.FormUploader(config);
const putExtra = new qiniu_1.form_up.PutExtra();
const key = `${to}/${file}`.replace(/\/{2,}/g, '/').replace(/^\/+/, '');
const putPolicy = new qiniu_1.rs.PutPolicy({
scope: `${bucket}:${key}`,
});
const uploadToken = putPolicy.uploadToken(mac);
formUploader.putFile(uploadToken, key, path_1.default.resolve(cwd, file), putExtra, (respErr, respBody, respInfo) => {
if (respErr || respInfo.statusCode !== 200) {
reject(respErr);
}
else {
resolve(respBody);
}
});
});
}))
.then(resolve)
.catch(reject);
});
};
;